@cortex-js/compute-engine 0.63.0 → 0.64.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/compile.esm.js +8 -3
- package/dist/compile.min.esm.js +7 -7
- package/dist/compile.min.umd.cjs +7 -7
- package/dist/compile.umd.cjs +8 -3
- package/dist/compute-engine.esm.js +1097 -106
- package/dist/compute-engine.min.esm.js +80 -80
- package/dist/compute-engine.min.umd.cjs +80 -80
- package/dist/compute-engine.umd.cjs +1097 -106
- package/dist/core.esm.js +1096 -105
- package/dist/core.min.esm.js +78 -78
- package/dist/core.min.umd.cjs +78 -78
- package/dist/core.umd.cjs +1096 -105
- package/dist/identities.esm.js +2 -7
- package/dist/identities.min.esm.js +2 -2
- package/dist/identities.min.umd.cjs +2 -2
- package/dist/identities.umd.cjs +2 -7
- package/dist/integration-rules.esm.js +3 -2
- package/dist/integration-rules.min.esm.js +4 -4
- package/dist/integration-rules.min.umd.cjs +4 -4
- package/dist/integration-rules.umd.cjs +3 -2
- package/dist/interval.esm.js +3 -2
- package/dist/interval.min.esm.js +4 -4
- package/dist/interval.min.umd.cjs +4 -4
- package/dist/interval.umd.cjs +3 -2
- package/dist/latex-syntax.esm.js +3 -2
- package/dist/latex-syntax.min.esm.js +6 -6
- package/dist/latex-syntax.min.umd.cjs +6 -6
- package/dist/latex-syntax.umd.cjs +3 -2
- package/dist/math-json.esm.js +2 -2
- package/dist/math-json.min.esm.js +2 -2
- package/dist/math-json.min.umd.cjs +2 -2
- package/dist/math-json.umd.cjs +2 -2
- package/dist/numerics.esm.js +53 -91
- package/dist/numerics.min.esm.js +4 -4
- package/dist/numerics.min.umd.cjs +4 -4
- package/dist/numerics.umd.cjs +53 -91
- package/dist/types/big-decimal/big-decimal.d.ts +1 -1
- package/dist/types/big-decimal/index.d.ts +1 -1
- package/dist/types/big-decimal/transcendentals.d.ts +1 -1
- package/dist/types/big-decimal/utils.d.ts +1 -1
- package/dist/types/common/ansi-codes.d.ts +1 -1
- package/dist/types/common/configuration-change.d.ts +1 -1
- package/dist/types/common/fuzzy-string-match.d.ts +1 -1
- package/dist/types/common/grapheme-splitter.d.ts +1 -1
- package/dist/types/common/interruptible.d.ts +1 -1
- package/dist/types/common/one-of.d.ts +1 -1
- package/dist/types/common/signals.d.ts +1 -1
- package/dist/types/common/type/ast-nodes.d.ts +1 -1
- package/dist/types/common/type/boxed-type.d.ts +1 -1
- package/dist/types/common/type/lexer.d.ts +1 -1
- package/dist/types/common/type/parse.d.ts +1 -1
- package/dist/types/common/type/parser.d.ts +1 -1
- package/dist/types/common/type/primitive.d.ts +1 -1
- package/dist/types/common/type/reduce.d.ts +1 -1
- package/dist/types/common/type/serialize.d.ts +1 -1
- package/dist/types/common/type/subtype.d.ts +1 -1
- package/dist/types/common/type/type-builder.d.ts +1 -1
- package/dist/types/common/type/types.d.ts +1 -1
- package/dist/types/common/type/utils.d.ts +1 -1
- package/dist/types/common/utils.d.ts +1 -1
- package/dist/types/compile.d.ts +1 -1
- package/dist/types/compute-engine/assume.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/apply.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/arithmetic-add.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/arithmetic-mul-div.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/arithmetic-power.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/ascii-math.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/box.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-operator-definition.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-value-definition.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/cache.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/canonical-utils.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/canonical.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/compare.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/constants.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/constraint-subject.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/exp-to-trig.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/expand.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/factor.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/flatten.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/hold.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/inequality-bounds.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/init-lazy-refs.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/invisible-operator.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/match.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/multivariate-gcd.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/multivariate-poly.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/negate.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/numerics.d.ts +11 -5
- package/dist/types/compute-engine/boxed-expression/order.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/pattern-utils.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/polynomial-degree.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/polynomials.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/predicates.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/rule-index.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/rules.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/serialize.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/sgn.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/simplify.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/solve-linear-system.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/solve.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/stochastic-equal.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/trigonometry.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/type-guards.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/utils.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/validate.d.ts +1 -1
- package/dist/types/compute-engine/collection-utils.d.ts +1 -1
- package/dist/types/compute-engine/compilation/base-compiler.d.ts +1 -1
- package/dist/types/compute-engine/compilation/compile-expression.d.ts +1 -1
- package/dist/types/compute-engine/compilation/constant-folding.d.ts +1 -1
- package/dist/types/compute-engine/compilation/glsl-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/gpu-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/interval-glsl-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/interval-javascript-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/javascript-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/python-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/types.d.ts +1 -1
- package/dist/types/compute-engine/compilation/wgsl-target.d.ts +1 -1
- package/dist/types/compute-engine/cost-function.d.ts +1 -1
- package/dist/types/compute-engine/engine-assumptions.d.ts +1 -1
- package/dist/types/compute-engine/engine-cache.d.ts +1 -1
- package/dist/types/compute-engine/engine-common-symbols.d.ts +1 -1
- package/dist/types/compute-engine/engine-compilation-targets.d.ts +1 -1
- package/dist/types/compute-engine/engine-configuration-lifecycle.d.ts +1 -1
- package/dist/types/compute-engine/engine-declarations.d.ts +1 -1
- package/dist/types/compute-engine/engine-expression-entrypoints.d.ts +1 -1
- package/dist/types/compute-engine/engine-extension-contracts.d.ts +1 -1
- package/dist/types/compute-engine/engine-library-bootstrap.d.ts +1 -1
- package/dist/types/compute-engine/engine-numeric-configuration.d.ts +1 -1
- package/dist/types/compute-engine/engine-runtime-state.d.ts +1 -1
- package/dist/types/compute-engine/engine-scope.d.ts +1 -1
- package/dist/types/compute-engine/engine-sequences.d.ts +1 -1
- package/dist/types/compute-engine/engine-simplification-rules.d.ts +1 -1
- package/dist/types/compute-engine/engine-startup-coordinator.d.ts +1 -1
- package/dist/types/compute-engine/engine-type-resolver.d.ts +1 -1
- package/dist/types/compute-engine/engine-validation-entrypoints.d.ts +1 -1
- package/dist/types/compute-engine/free-functions.d.ts +1 -1
- package/dist/types/compute-engine/function-properties/index.d.ts +1 -1
- package/dist/types/compute-engine/function-utils.d.ts +1 -1
- package/dist/types/compute-engine/fungrim/loader.d.ts +1 -1
- package/dist/types/compute-engine/fungrim/types.d.ts +1 -1
- package/dist/types/compute-engine/global-types.d.ts +1 -1
- package/dist/types/compute-engine/index.d.ts +1 -1
- package/dist/types/compute-engine/interval/arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/interval/comparison.d.ts +1 -1
- package/dist/types/compute-engine/interval/elementary.d.ts +1 -1
- package/dist/types/compute-engine/interval/index.d.ts +1 -1
- package/dist/types/compute-engine/interval/trigonometric.d.ts +1 -1
- package/dist/types/compute-engine/interval/types.d.ts +1 -1
- package/dist/types/compute-engine/interval/util.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/default-dictionary.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-algebra.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-calculus.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-colors.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-complex.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-core.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-linear-algebra.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-logic.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-other.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-relational-operators.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-sets.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-statistics.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-symbols.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-trigonometry.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-units.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/indexed-types.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/latex-syntax.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/parse-number.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/parse-symbol.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/parse.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serialize-dms.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serializer.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/types.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/utils.d.ts +1 -1
- package/dist/types/compute-engine/library/arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/library/calculus.d.ts +1 -1
- package/dist/types/compute-engine/library/collections.d.ts +1 -1
- package/dist/types/compute-engine/library/colors.d.ts +1 -1
- package/dist/types/compute-engine/library/combinatorics.d.ts +1 -1
- package/dist/types/compute-engine/library/complex.d.ts +1 -1
- package/dist/types/compute-engine/library/control-structures.d.ts +1 -1
- package/dist/types/compute-engine/library/core.d.ts +1 -1
- package/dist/types/compute-engine/library/fractals.d.ts +1 -1
- package/dist/types/compute-engine/library/library.d.ts +1 -1
- package/dist/types/compute-engine/library/linear-algebra.d.ts +1 -1
- package/dist/types/compute-engine/library/logic-analysis.d.ts +1 -1
- package/dist/types/compute-engine/library/logic.d.ts +1 -1
- package/dist/types/compute-engine/library/number-theory.d.ts +1 -1
- package/dist/types/compute-engine/library/polynomials.d.ts +1 -1
- package/dist/types/compute-engine/library/quantity-arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/library/random-expression.d.ts +1 -1
- package/dist/types/compute-engine/library/relational-operator.d.ts +1 -1
- package/dist/types/compute-engine/library/sets.d.ts +1 -1
- package/dist/types/compute-engine/library/special-functions.d.ts +1 -1
- package/dist/types/compute-engine/library/statistics.d.ts +1 -1
- package/dist/types/compute-engine/library/trigonometry.d.ts +1 -1
- package/dist/types/compute-engine/library/type-handlers.d.ts +1 -1
- package/dist/types/compute-engine/library/unit-data.d.ts +1 -1
- package/dist/types/compute-engine/library/units.d.ts +1 -1
- package/dist/types/compute-engine/library/utils.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/big-numeric-value.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/exact-numeric-value.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/machine-numeric-value.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/types.d.ts +1 -1
- package/dist/types/compute-engine/numerics/bernoulli.d.ts +1 -1
- package/dist/types/compute-engine/numerics/bigint.d.ts +1 -1
- package/dist/types/compute-engine/numerics/complex-esm-augment.d.ts +1 -1
- package/dist/types/compute-engine/numerics/expression.d.ts +1 -1
- package/dist/types/compute-engine/numerics/interval.d.ts +1 -1
- package/dist/types/compute-engine/numerics/linear-algebra.d.ts +1 -1
- package/dist/types/compute-engine/numerics/monte-carlo.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric-bigint.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric-bignum.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric-complex.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric.d.ts +1 -1
- package/dist/types/compute-engine/numerics/oscillatory-quadrature.d.ts +1 -1
- package/dist/types/compute-engine/numerics/polynomial-roots.d.ts +1 -1
- package/dist/types/compute-engine/numerics/primes.d.ts +5 -3
- package/dist/types/compute-engine/numerics/random.d.ts +1 -1
- package/dist/types/compute-engine/numerics/rationals.d.ts +1 -1
- package/dist/types/compute-engine/numerics/richardson.d.ts +1 -1
- package/dist/types/compute-engine/numerics/special-functions.d.ts +1 -1
- package/dist/types/compute-engine/numerics/statistics.d.ts +1 -1
- package/dist/types/compute-engine/numerics/strings.d.ts +1 -1
- package/dist/types/compute-engine/numerics/types.d.ts +1 -1
- package/dist/types/compute-engine/numerics/unit-data.d.ts +1 -1
- package/dist/types/compute-engine/oeis.d.ts +1 -1
- package/dist/types/compute-engine/rubi/compile.d.ts +1 -1
- package/dist/types/compute-engine/rubi/driver.d.ts +1 -1
- package/dist/types/compute-engine/rubi/loader.d.ts +1 -1
- package/dist/types/compute-engine/rubi/match.d.ts +1 -1
- package/dist/types/compute-engine/rubi/normal-form.d.ts +1 -1
- package/dist/types/compute-engine/rubi/rubi-utils.d.ts +1 -1
- package/dist/types/compute-engine/rubi/types.d.ts +1 -1
- package/dist/types/compute-engine/sequence.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/antiderivative.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/derivative.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/distribute.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/fu-cost.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/fu-transforms.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/fu.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/limit.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/logic-utils.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/residue.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-abs.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-divide.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-factorial.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-hyperbolic.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-infinity.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-log.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-logic.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-power.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-product.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-rules.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-sum.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-trig.d.ts +1 -1
- package/dist/types/compute-engine/tensor/tensor-fields.d.ts +1 -1
- package/dist/types/compute-engine/tensor/tensors.d.ts +1 -1
- package/dist/types/compute-engine/types-definitions.d.ts +1 -1
- package/dist/types/compute-engine/types-engine.d.ts +1 -1
- package/dist/types/compute-engine/types-evaluation.d.ts +1 -1
- package/dist/types/compute-engine/types-expression.d.ts +1 -1
- package/dist/types/compute-engine/types-kernel-evaluation.d.ts +1 -1
- package/dist/types/compute-engine/types-kernel-serialization.d.ts +1 -1
- package/dist/types/compute-engine/types-serialization.d.ts +1 -1
- package/dist/types/compute-engine/types.d.ts +1 -1
- package/dist/types/compute-engine.d.ts +1 -1
- package/dist/types/core.d.ts +1 -1
- package/dist/types/identities.d.ts +1 -1
- package/dist/types/integration-rules.d.ts +1 -1
- package/dist/types/interval.d.ts +1 -1
- package/dist/types/latex-syntax.d.ts +2 -2
- package/dist/types/math-json/symbols.d.ts +1 -1
- package/dist/types/math-json/types.d.ts +1 -1
- package/dist/types/math-json/utils.d.ts +1 -1
- package/dist/types/math-json.d.ts +2 -2
- package/dist/types/numerics.d.ts +1 -1
- package/package.json +1 -1
package/dist/compile.min.esm.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
/** Compute Engine 0.
|
|
2
|
-
var je=class extends Error{cause;value;constructor({message:n,value:t,cause:i}={}){super(n??"Operation canceled"),t&&(this.value=t),this.cause=i,this.name="CancellationError"}};function et(e){if(e!==void 0&&Date.now()>=e)throw new je({cause:"timeout",message:"Timeout exceeded"})}var Vt;function qt(){return Vt}function Jt(e,n){let t=Vt;Vt=e;try{return n()}finally{Vt=t}}function Ki(e,n){let t=Date.now();for(;;){let{done:i,value:r}=e.next();if(i)return r;if(Date.now()-t>=n)throw new je({value:r,cause:"timeout",message:`Timeout exceeded (${n}ms)`})}}function er(e,n,t={}){let{contract:i=.125,step:r=1,power:s=2,atol:o=1e-16,rtol:a=o>0?0:Math.sqrt(Number.EPSILON),maxeval:u=1e6,breaktol:l=2,deadline:c=qt()}=t;return isFinite(n)?Jt(c,()=>{let f=r,p=Math.pow(1/i,s),d=e(n+f),b=[d],y=1/0,E=1;for(;E<u;){et(c),E+=1,f*=i,b.push(e(n+f));let N=p,k=1/0;for(let $=b.length-2;$>=0;$--){let L=b[$];b[$]=b[$+1]+(b[$+1]-b[$])/(N-1);let O=Math.abs(b[$]-L);k=Math.min(k,O),O<y&&(d=b[$],y=O),N*=p}if(k>l*y||!isFinite(k)||y<=Math.max(a*Math.abs(d),o))break}return[d,y]}):er(f=>e(1/f),1/n,{rtol:a,atol:o,maxeval:u,contract:Math.abs(i)>1?1/i:i,step:1/r,power:s,deadline:c})}var Zo=new Map,Oc=1e5;function z(e){if(e<=Oc){let n=Zo.get(e);return n===void 0&&(n=10n**BigInt(e),Zo.set(e,n)),n}return 10n**BigInt(e)}function He(e){if(e<0n&&(e=-e),e===0n)return 0;let n=0,t=1;for(;e>>BigInt(t)>0n;)t*=2;for(let i=t>>1;i>=1;i>>=1)e>>BigInt(i)>0n&&(n+=i,e>>=BigInt(i));return n+1}function Xo(e,n,t){return e*n>>BigInt(t)}function Qo(e,n,t){return(e<<BigInt(t))/n}function tt(e,n){if(e===0n)return 0n;if(e<0n)throw new RangeError("fpsqrt: negative input");let t=e<<BigInt(n),i;if(n<Lc){i=ir(t);let a;do a=i,i=(i+t/i)/2n;while(xe(i-a)>1n)}else i=rr(t,He(t));let r=(i+t/i)/2n,s=xe(i*i-t);return xe(r*r-t)<s?r:i}function ir(e){let n=He(e);if(n<=1023){let o=Math.sqrt(Number(e));if(Number.isFinite(o)&&o>=1)return BigInt(Math.floor(o))}let t=n-52,i=Number(e>>BigInt(t)),r=Math.sqrt(i);t&1&&(r*=Math.SQRT2);let s=BigInt(Math.round(r))<<BigInt(t>>1);return s>0n?s:1n}var Ko=1024,Lc=640;function rr(e,n){if(n<Ko){let s=ir(e),o;do o=s,s=(s+e/s)/2n;while(xe(s-o)>1n);for(;s*s>e;)s-=1n;for(;(s+1n)*(s+1n)<=e;)s+=1n;return s}let t=n>>2<<1,i=rr(e>>BigInt(t),n-t)<<BigInt(t>>1),r;do r=i,i=(i+e/i)/2n;while(xe(i-r)>1n);for(;i*i>e;)i-=1n;for(;(i+1n)*(i+1n)<=e;)i+=1n;return i}function xe(e){return e<0n?-e:e}function ce(e){if(e===0n)return 1;if(e<0n&&(e=-e),e<0x20000000000000n)return Math.floor(Math.log10(Number(e)))+1;let n=0,t=e,i=1;for(;t>>BigInt(i)>0n;)i*=2;for(let s=i>>1;s>=1;s>>=1)t>>BigInt(s)>0n&&(n+=s,t>>=BigInt(s));n+=1;let r=Math.ceil(n*.30102999566398);return e<z(r-1)?r-1:e>=z(r)?r+1:r}function zt(e,n){let t=BigInt(n),i=1n<<t;if(e===0n)return i;let r=0,s=e,o=i>>1n;for(;xe(s)>o;)s=s/2n,r++;let a=i,u=s;a+=u;for(let l=2;u=(u*s>>t)/BigInt(l),u!==0n;l++)a+=u;for(let l=0;l<r;l++)a=a*a>>t;return a}var Bc=2300;function sr(e,n){let t=1n<<BigInt(n);if(e<=0n)throw new RangeError("fpln: input must be positive");return e===t?0n:n>=Bc?Jc(e,n):Vc(e,n)}function Vc(e,n){let t=BigInt(n),i=1n<<t,r=Number(e),s=Number(i),o,a=e,u=0,l=2;if(Number.isFinite(r)&&Number.isFinite(s)&&r>0&&s>0){let f=r/s;if(Number.isFinite(f)&&f>0){let p=Math.log(f);Number.isFinite(p)?(o=BigInt(Math.round(p*s)),l=48):o=nr(e,n)}else o=nr(e,n)}else{a=e;let f=i<<1n,p=i>>1n;for(;a>f||a<p;)a=tt(a,n),u++;o=nr(a,n)}for(let f=Math.min(n,Math.max(8,2*l));f<n;){let p=BigInt(f),d=BigInt(n-f),b=o>>d,y=zt(b,f);if(y===0n){o=o/2n;continue}let E=a>>d;o=b+(E<<p)/y-(1n<<p)<<d,f=Math.min(n,2*f)}let c=0n;for(let f=0;f<100;f++){let p=zt(o,n);if(p===0n){o=o/2n;continue}let d=o+(a<<t)/p-i,b=xe(d-o);if(b<=1n||b<100000n&&c>0n&&c<100000n&&b*4n>=c)break;c=b,o=d}for(let f=0;f<u;f++)o=2n*o;return o}var gn=null;function qc(e){if(gn!==null){if(gn.bits===e)return gn.value;if(gn.bits>e)return gn.value>>BigInt(gn.bits-e)}let n=Math.ceil(e*Ht)+12,t;if(n<=Wo.length){let i=Wo.slice(0,n);t=(BigInt(i)<<BigInt(e))/z(i.length)}else t=Zc(e);return gn={bits:e,value:t},t}function Jc(e,n){let t=BigInt(n),i=He(e)-n,r=Math.max(2,Math.ceil(n/2+4-i)),s=e<<BigInt(r-2),o=1n<<t,a=s;for(;xe(o-a)>1n;){let l=o+a>>1n;a=it(o*a),o=l}return jt(n)*s/(2n*o)-BigInt(r)*qc(n)}var Yo=6243314768165359n;function nr(e,n){let t=BigInt(He(e)-n);return n>=53?t*Yo<<BigInt(n-53):t*Yo>>BigInt(53-n)}var Dn="314159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034861045432664821339360726024914127372458700660631558817488152092096282925409171536436789259036001133053054882046652138414695194151160943305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912983367336244065664308602139494639522473719070217986094370277053921717629317675238467481846766940513200056812714526356082778577134275778960917363717872146844090122495343014654958537105079227968925892354201995611212902196086403441815981362977477130996051870721134999999837297804995105973173281609631859502445945534690830264252230825334468503526193118817101000313783875288658753320838142061717766914730359825349042875546873115956286388235378759375195778185778053217122680661300192787661119590921642019893809525720106548586327886593615338182796823030195203530185296899577362259941389124972177528347913151557485724245415069595082953311686172785588907509838175463746493931925506040092770167113900984882401285836160356370766010471018194295559619894676783744944825537977472684710404753464620804668425906949129331367702898915210475216205696602405803815019351125338243003558764024749647326391419927260426992279678235478163600934172164121992458631503028618297455570674983850549458858692699569092721079750930295532116534498720275596023648066549911988183479775356636980742654252786255181841757467289097777279380008164706001614524919217321721477235014144197356854816136115735255213347574184946843852332390739414333454776241686251898356948556209921922218427255025425688767179049460165346680498862723279178608578438382796797668145410095388378636095068006422512520511739298489608412848862694560424196528502221066118630674427862203919494504712371378696095636437191728746776465757396241389086583264599581339047802759009946576407895126946839835259570982582262052248940772671947826848260147699090264013639443745530506820349625245174939965143142980919065925093722169646151570985838741059788595977297549893016175392846813826868386894277415599185592524595395943104997252468084598727364469584865383673622262609912460805124388439045124413654976278079771569143599770012961608944169486855584840635",Ht=Math.log10(2),Wo="693147180559945309417232121458176568075500134360255254120680009493393621969694715605863326996418687542001481020570685733685520235758130557032670751635075961930727570828371435190307038623891673471123350115364497955239120475172681574932065155524734139525882950453007095326366642654104239157814952043740430385500801944170641671518644712839968171784546957026271631064546150257207402481637773389638550695260668341137273873722928956493547025762652098859693201965058554764703306793654432547632744951250406069438147104689946506220167720424524529612687946546193165174681392672504103802546259656869144192871608293803172714367782654877566485085674077648451464439940461422603193096735402574446070308096085047486638523138181676751438667476647890881437141985494231519973548803751658612753529166100071053558249879414729509293113897155998205654392871700072180857610252368892132449713893203784393530887748259701715591070882368362758984258918535302436342143670611892367891923723146723217205340164925687274778234453534764811494186423867767744060695626573796008670762571991847340226514628379048830620330611446300737194890027436439650025809365194430411911506080948793067865158870900605203468429736193841289652556539686022194122924207574321757489097706752687115817051137009158942665478595964890653058460258668382940022833005382074005677053046787001841624044188332327983863490015631218895606505531512721993983320307514084260914790012651682434438935724727882054862715527418772430024897945401961872339808608316648114909306675193393128904316413706813977764981769748689038877899912965036192707108892641052309247839173735012298424204995689359922066022046549415106139187885744245577510206837030866619480896412186807790208181588580001688115973056186676199187395200766719214592236720602539595436541655311295175989940056000366513567569051245926825743946483168332624901803824240824231452306140963805700702551387702681785163069025513703234053802145019015374029509942262995779647427138157363801729873940704242179972266962979939312706935747240493386530879758721699645129446491883771156701678598804981838896784134938314014073166472765327635919233511233389338709513209059272185471328975470797891384445466676192702885533423429899321803769154973340267546758873236778342916191810430116091695265547859732891763545556742863877463987101912431754255888301206779210280341206879759143081283307230300883494705792496591005860012341561757413272465943",zc=13591409n,Gc=545140134n,jc=10939058860032000n,Hc=47.11;function Gt(e,n){if(n-e===1){let l,c;if(e===0)l=1n,c=1n;else{l=BigInt(6*e-5)*BigInt(2*e-1)*BigInt(6*e-1);let p=BigInt(e);c=p*p*p*jc}let f=l*(zc+Gc*BigInt(e));return e&1&&(f=-f),[l,c,f]}let t=e+n>>1,[i,r,s]=Gt(e,t),[o,a,u]=Gt(t,n);return[i*o,r*a,a*s+i*u]}function ea(e){return Math.max(2,Math.floor(e/Hc)+3)}function Uc(e){let[,n,t]=Gt(0,ea(e)),i=1n<<BigInt(e),r=it(10005n*i*i);return n*426880n*r/t}function na(e){let[,n,t]=Gt(0,ea(Math.ceil(e/Ht))),i=z(e),r=it(10005n*i*i);return n*426880n*r/t}function tr(e,n){if(n-e===1){let l=e===0?1n:BigInt(2*e-1),c=e===0?1n:9n*BigInt(2*e+1);return[l,c,l]}let t=e+n>>1,[i,r,s]=tr(e,t),[o,a,u]=tr(t,n);return[i*o,r*a,a*s+i*u]}function Zc(e){let n=Math.max(2,Math.ceil(e/3.169925)+5),[,t,i]=tr(0,n);return(i<<BigInt(e+1))/(3n*t)}function it(e){if(e<0n)throw new RangeError("bigintSqrt: negative input");if(e===0n)return 0n;let n=He(e);if(n>=Ko)return rr(e,n);let t=ir(e),i;do i=t,t=(t+e/t)/2n;while(xe(t-i)>1n);for(;t*t>e;)t-=1n;for(;(t+1n)*(t+1n)<=e;)t+=1n;return t}var bn=null;function jt(e){if(bn!==null){if(bn.bits===e)return bn.value;if(bn.bits>e)return bn.value>>BigInt(bn.bits-e)}let n=Yc(e);return bn={bits:e,value:n},n}function Yc(e){let n=Math.ceil(e*Ht)+12;if(n+1<=Dn.length){let t=Dn.slice(0,n+1);return(BigInt(t)<<BigInt(e))/z(t.length-1)}return Uc(e)}function Ut(e,n){let t=BigInt(n),i=1n<<t;if(e===0n)return[0n,i];let r=jt(n),s=2n*r,o=r/2n,a,u=xe(e);if(u>i<<30n){let O=He(u)-n+64,D=n+O,Z=e<<BigInt(O),q=2n*jt(D),H=Z%q;H<0n&&(H+=q),a=H>>BigInt(O)}else a=e%s;a<0n&&(a+=s);let l=1n,c=1n;a>3n*o?(a=s-a,l=-1n):a>r?(a=a-r,l=-1n,c=-1n):a>o&&(a=r-a,c=-1n);let f=Math.round(n*Ht),p=Math.min(18,Math.max(2,Math.ceil(.87*Math.sqrt(f)))),d=0,b=i>>BigInt(p);for(;a>b;)a=a/2n,d++;let y=a,E=i,N=a,k=i,$=a*a,L=2n*t;for(let O=2;;O+=2){if(k=(k*$>>L)/(BigInt(O)*BigInt(O-1)),k===0n){N=(N*$>>L)/(BigInt(O+1)*BigInt(O)),N!==0n&&(O%4===2?(E-=k,y-=N):(E+=k,y+=N));break}if(N=(N*$>>L)/(BigInt(O+1)*BigInt(O)),O%4===2?(E-=k,y-=N):(E+=k,y+=N),N===0n)break}for(let O=0;O<d;O++){let D=2n*y*E>>t,Z=(2n*E*E>>t)-i;y=D,E=Z}return[l*y,c*E]}function nt(e,n){if(e===0n)return 0n;if(e<0n)return-nt(-e,n);let t=BigInt(n),i=1n<<t,s=jt(n)/2n;if(e>i){let d=(i<<t)/e;return s-nt(d,n)}let o=4n*i/10n,a=0,u=e;for(;u>o;){let d=u*u,b=(i<<t)+d>>t,y=tt(b,n);u=(u<<t)/(i+y),a++}let l=u,c=u,f=u*u,p=2n*t;for(let d=3;c=c*f>>p,c!==0n;d+=2)d%4===3?l-=c/BigInt(d):l+=c/BigInt(d);for(let d=0;d<a;d++)l=2n*l;return l}var or=NaN,h=class e{static precision=50;static ZERO=Object.freeze(Object.assign(Object.create(e.prototype),{significand:0n,exponent:0}));static ONE=Object.freeze(Object.assign(Object.create(e.prototype),{significand:1n,exponent:0}));static TWO=Object.freeze(Object.assign(Object.create(e.prototype),{significand:2n,exponent:0}));static NEGATIVE_ONE=Object.freeze(Object.assign(Object.create(e.prototype),{significand:-1n,exponent:0}));static HALF=Object.freeze(Object.assign(Object.create(e.prototype),{significand:5n,exponent:-1}));static NAN=Object.freeze(Object.assign(Object.create(e.prototype),{significand:0n,exponent:NaN}));static POSITIVE_INFINITY=Object.freeze(Object.assign(Object.create(e.prototype),{significand:1n,exponent:1/0}));static NEGATIVE_INFINITY=Object.freeze(Object.assign(Object.create(e.prototype),{significand:-1n,exponent:1/0}));static _piFullPrecision=null;static _piCache=null;static _piCachePrecision=0;static _eulerGammaCache=null;static _eulerGammaCachePrecision=0;static get PI(){let n=e.precision;if(e._piCache!==null&&e._piCachePrecision===n)return e._piCache;let t=n+4,i;if(t+1<=Dn.length)e._piFullPrecision===null&&(e._piFullPrecision=new e(Dn[0]+"."+Dn.slice(1))),i=e._piFullPrecision.toPrecision(t);else{let r=t+4;i=J(na(r),-r).toPrecision(t)}return e._piCache=i,e._piCachePrecision=n,i}static get EULER_GAMMA(){let n=e.precision;if(e._eulerGammaCache!==null&&e._eulerGammaCachePrecision>=n)return e._eulerGammaCache.toPrecision(n);let t=Qc(n);return e._eulerGammaCache=t,e._eulerGammaCachePrecision=n,t}significand;exponent;constructor(n){if(n instanceof e){this.significand=n.significand,this.exponent=n.exponent;return}if(typeof n=="bigint"){[this.significand,this.exponent]=Zt(n,0);return}if(typeof n=="number"){[this.significand,this.exponent]=Kc(n);return}[this.significand,this.exponent]=sa(n)}isNaN(){return Number.isNaN(this.exponent)}isZero(){return this.exponent===0&&this.significand===0n}isFinite(){return Number.isFinite(this.exponent)}isInteger(){return this.isFinite()&&this.exponent>=0}isPositive(){return this.significand>0n}isNegative(){return this.significand<0n}cmp(n){if(typeof n=="number"){if(Number.isNaN(n))return or;let d=this.exponent;if(Number.isNaN(d))return or;if(n===0)return this.significand===0n?0:this.significand>0n?1:-1;if(!Number.isFinite(d))return n===1/0?this.significand>0n?0:-1:n===-1/0?this.significand<0n?0:1:this.significand>0n?1:-1;if(this.significand===0n)return n>0?-1:1;if(n===1/0)return-1;if(n===-1/0)return 1;if(this.significand>0n!=n>0)return this.significand>0n?1:-1;if(Number.isInteger(n)&&d>=0&&d<=15){let b=this.significand*z(d),y=BigInt(n);return b<y?-1:b>y?1:0}n=new e(n)}let t=this.exponent,i=n.exponent,r=this.significand,s=n.significand;if(t!==t||i!==i)return or;if(!Number.isFinite(t)||!Number.isFinite(i))return!Number.isFinite(t)&&!Number.isFinite(i)?r===s?0:r>s?1:-1:Number.isFinite(t)?s>0n?-1:1:r>0n?1:-1;if(r===0n)return s===0n?0:s>0n?-1:1;if(s===0n)return r>0n?1:-1;if(r>0n&&s<0n)return 1;if(r<0n&&s>0n)return-1;if(t===i)return r<s?-1:r>s?1:0;let o=ce(r),a=ce(s),u=o+t,l=a+i;if(u!==l){let d=r>0n?1:-1;return u>l?d:-d}let c=r,f=s,p=Math.abs(t-i);if(p>1e3){let d=o,b=a,y=Math.max(d,b)+1;d<y&&(c=c*z(y-d)),b<y&&(f=f*z(y-b))}else t<i?f=f*z(p):c=c*z(p);return c<f?-1:c>f?1:0}eq(n){return typeof n=="number"?n===0?this.significand===0n&&this.exponent===0:n===1?this.significand===1n&&this.exponent===0:n===-1?this.significand===-1n&&this.exponent===0:Number.isInteger(n)&&Number.isFinite(this.exponent)&&this.exponent>=0&&this.exponent<=15?this.significand*z(this.exponent)===BigInt(n):this.cmp(n)===0:this.significand===n.significand&&this.exponent===n.exponent}lt(n){return this.cmp(n)===-1}lte(n){let t=this.cmp(n);return t===-1||t===0}gt(n){return this.cmp(n)===1}gte(n){let t=this.cmp(n);return t===1||t===0}add(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;if(Number.isFinite(t)&&Number.isFinite(i)){if(t===i)return J(this.significand+n.significand,t);let o=t-i;return o>0?J(this.significand*z(o)+n.significand,i):J(this.significand+n.significand*z(-o),t)}if(t!==t||i!==i)return e.NAN;let r=!Number.isFinite(t),s=!Number.isFinite(i);return r&&s?this.significand!==n.significand?e.NAN:this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:r?this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:n.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY}sub(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;if(Number.isFinite(t)&&Number.isFinite(i)){if(t===i)return J(this.significand-n.significand,t);let o=t-i;return o>0?J(this.significand*z(o)-n.significand,i):J(this.significand-n.significand*z(-o),t)}if(t!==t||i!==i)return e.NAN;let r=!Number.isFinite(t),s=!Number.isFinite(i);return r&&s?this.significand===n.significand?e.NAN:this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:r?this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:n.significand>0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY}mul(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;if(Number.isFinite(t)&&Number.isFinite(i))return J(this.significand*n.significand,t+i);if(t!==t||i!==i||this.significand===0n||n.significand===0n)return e.NAN;let r=this.significand>0n?1n:-1n,s=n.significand>0n?1n:-1n;return r*s>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY}neg(){let n=this.significand;return n===0n?this:Number.isFinite(this.exponent)?J(-n,this.exponent):n>0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY}abs(){return this.significand>=0n?this:Number.isFinite(this.exponent)?J(-this.significand,this.exponent):e.POSITIVE_INFINITY}floor(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=this.trunc();return this.significand<0n?t.sub(J(1n,0)):t}return this}ceil(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=this.trunc();return this.significand>0n?t.add(J(1n,0)):t}return this}round(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=J(5n,-1);return this.significand>0n?this.add(t).trunc():this.sub(t).trunc()}return this}trunc(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=this.significand/z(-n);return J(t===0n?0n:t,0)}return this}div(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent,r=this.significand,s=n.significand;if(Number.isFinite(t)&&Number.isFinite(i)){if(s===0n)return r===0n?e.NAN:r>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY;if(r===0n)return J(0n,0);let u=e.precision,l=10,c=r<0n?-r:r,f=s<0n?-s:s,p=ce(c),d=ce(f),b=u+l+Math.max(0,d-p),y=z(b),E=r*y/s,N=t-i-b;return J(E,N).toPrecision(u)}if(t!==t||i!==i)return e.NAN;let o=!Number.isFinite(t),a=!Number.isFinite(i);if(o&&a)return e.NAN;if(o){let u=r>0n?1n:-1n,l=s>0n?1n:s<0n?-1n:1n;return u*l>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY}return J(0n,0)}inv(){return J(1n,0).div(this)}divToward(n,t){typeof n=="number"&&(n=new e(n));let i=this.exponent,r=n.exponent,s=this.significand,o=n.significand;if(!Number.isFinite(i)||!Number.isFinite(r)||o===0n||s===0n)return this.div(n);let a=s<0n!=o<0n,u=s<0n?-s:s,l=o<0n?-o:o,c=e.precision,p=c+10+Math.max(0,ce(l)-ce(u)),d=u*z(p),b=d/l,y=d%l!==0n,E=i-r-p,N=a?t==="floor":t==="ceiling",[k,$]=ta(b,y,E,c,N);return J(a?-k:k,$)}sqrtToward(n){if(this.significand===0n)return this.exponent!==this.exponent?this:e.ZERO;if(!Number.isFinite(this.exponent))return this.significand>0n?e.POSITIVE_INFINITY:e.NAN;if(this.significand<0n)return e.NAN;let t=e.precision,i=4,r=this.significand,s=this.exponent,o=s+ce(r)-1,a=Math.floor(o/2),u=t+i-a;s+2*u<0&&(u=Math.ceil(-s/2)+1);let l=s+2*u,c=l>=0?r*z(l):r/z(-l),f=it(c),p=f*f!==c,[d,b]=ta(f,p,-u,t,n==="ceiling");return J(d,b)}mod(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;if(Number.isFinite(t)&&Number.isFinite(i)){if(n.significand===0n)return e.NAN;if(this.significand===0n)return J(0n,0);let r=t-i,s=r>=0?this.significand*z(r):this.significand,o=r>=0?n.significand:n.significand*z(-r),a=s/o;return this.sub(J(a,0).mul(n))}return t!==t||i!==i||!Number.isFinite(t)?e.NAN:new e(this)}pow(n){if(typeof n=="number"&&(n=new e(n)),this.isNaN()||n.isNaN()||!n.isFinite())return e.NAN;if(n.isInteger()){let l=n.toBigInt();if(l===0n)return J(1n,0);if(!this.isFinite())return l>0n?this.significand<0n&&l%2n!==0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY:J(0n,0);if(this.isZero())return l>0n?J(0n,0):e.POSITIVE_INFINITY;if(l<0n)return this.pow(n.neg()).inv();let c=this.significand<0n?-this.significand:this.significand,f=ce(c),p=f>15?f-15:0,d=p>0?Number(c/10n**BigInt(p)):Number(c),b=Math.log10(d)+p+this.exponent,y=Number(l)*b;if(y>9e15)return this.significand<0n&&l%2n!==0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY;if(y<-9e15)return J(0n,0);let E=e.precision,N=J(1n,0),k=this,$=l;for(;$>0n;)$&1n&&(N=N.mul(k).toPrecision(E)),$>>=1n,$>0n&&(k=k.mul(k).toPrecision(E));return N}if(!this.isFinite())return this.significand<0n?e.NAN:n.significand>0n?e.POSITIVE_INFINITY:e.ZERO;if(this.isZero())return n.significand>0n?e.ZERO:e.POSITIVE_INFINITY;if(this.significand<0n)return e.NAN;let t=this.significand,i=this.exponent+ce(t)-1,r=n.significand<0n?-n.significand:n.significand,o=n.exponent+ce(r)-1+Math.log10(Math.abs(i)*2.303+3)+1,a=Math.min(20,Math.max(2,Math.ceil(o)+2)),u=e.precision;e.precision=u+a;try{let l=Xc(this,u+a);return n.mul(l).exp().toPrecision(u)}finally{e.precision=u}}toNumber(){return Number.isFinite(this.exponent)?this.significand===0n?0:this.exponent===0?Number(this.significand):Number(this.toString()):this.exponent!==this.exponent?NaN:this.significand>0n?1/0:-1/0}toString(){if(!Number.isFinite(this.exponent))return this.exponent!==this.exponent?"NaN":this.significand>0n?"Infinity":"-Infinity";if(this.significand===0n)return"0";let n=this.significand<0n,t=(n?-this.significand:this.significand).toString(),i=t.length,r=i+this.exponent-1,s=n?"-":"";if(r>20||r<-6){let u=i===1?t:t[0]+"."+t.slice(1),l=r>=0?"+":"";return`${s}${u}e${l}${r}`}if(this.exponent>=0)return s+t+"0".repeat(this.exponent);let o=-this.exponent;if(o<i){let u=t.slice(0,i-o),l=t.slice(i-o);return`${s}${u}.${l}`}let a=o-i;return`${s}0.${"0".repeat(a)}${t}`}toFixed(n){let t=n??0;if(!Number.isFinite(this.exponent))return this.exponent!==this.exponent?"NaN":this.significand>0n?"Infinity":"-Infinity";let i=this.significand<0n,r=i?-this.significand:this.significand,s=this.exponent+t,o;if(s>=0)o=r*z(s);else{let f=z(-s),p=r/f,d=r%f,b=f/2n;d>b?o=p+1n:d<b||f%2n!==0n||p%2n===0n?o=p:o=p+1n}let a=i&&o!==0n?"-":"",u=o.toString();if(t===0)return`${a}${u}`;if(u.length<=t){let f=u.padStart(t,"0");return`${a}0.${f}`}let l=u.slice(0,u.length-t),c=u.slice(u.length-t);return`${a}${l}.${c}`}toPrecision(n){if(this.significand===0n||!Number.isFinite(this.exponent))return this;let t=this.significand<0n?-this.significand:this.significand,i=ce(t);if(i<=n)return this;let r=i-n,s=z(r),o=t/s,a=t-o*s,u=s/2n;(a>u||a===u&&o%2n!==0n)&&(o+=1n);let l=this.significand<0n?-o:o;return J(l,this.exponent+r)}toBigInt(){if(!Number.isFinite(this.exponent))throw this.exponent!==this.exponent?new RangeError("Cannot convert NaN to BigInt"):new RangeError("Cannot convert Infinity to BigInt");if(this.exponent>=0)return this.significand*z(this.exponent);let n=z(-this.exponent);return this.significand/n}},Wc=8,rt=[];function Xc(e,n){let t=e.significand,i=e.exponent;for(let s=rt.length-1;s>=0;s--){let o=rt[s];if(o.prec===n&&o.exp===i&&o.sig===t)return o.ln}let r=e.ln();return rt.push({sig:t,exp:i,prec:n,ln:r}),rt.length>Wc&&rt.shift(),r}function Qc(e){let n=e+20+Math.ceil(Math.log10(e+10)),t=h.precision;h.precision=n;try{let i=Math.ceil(n*Math.LN10/4)+5,r=new h(i),s=r.mul(r),o=h.ONE,a=h.ONE,u=h.ZERO,l=h.ZERO,c=h.ONE.div(new h(10).pow(n)),f=6*i+100;for(let p=1;p<=f;p++){let d=new h(p).mul(p);if(o=o.mul(s).div(d).toPrecision(n),l=l.add(h.ONE.div(p)).toPrecision(n),a=a.add(o).toPrecision(n),u=u.add(o.mul(l)).toPrecision(n),p>i&&o.lt(a.mul(c)))break}return u.div(a).sub(r.ln()).toPrecision(e)}finally{h.precision=t}}function J(e,n){let[t,i]=Zt(e,n),r=Object.create(h.prototype);return r.significand=t,r.exponent=i,r}function ta(e,n,t,i,r){if(e===0n)return[r&&n?1n:0n,t];let s=ce(e);if(s<=i)return[r&&n?e+1n:e,t];let o=s-i,a=z(o),u=e/a,l=n||e%a!==0n;return r&&l&&(u+=1n),[u,t+o]}var ia=1000000000n,ra=1000n;function Zt(e,n){if(e===0n)return[0n,0];for(;e%ia===0n;)e/=ia,n+=9;for(;e%ra===0n;)e/=ra,n+=3;for(;e%10n===0n;)e/=10n,n+=1;return[e,n]}function Kc(e){return Number.isNaN(e)?[0n,NaN]:e===1/0?[1n,1/0]:e===-1/0?[-1n,1/0]:Number.isInteger(e)?Zt(BigInt(e),0):sa(e.toString())}function sa(e){if(e=e.trim(),e===""||e==="NaN")return[0n,NaN];if(e==="Infinity"||e==="+Infinity")return[1n,1/0];if(e==="-Infinity")return[-1n,1/0];let n,t=0,i=e.search(/[eE]/);if(i!==-1){if(n=e.slice(0,i),t=Number(e.slice(i+1)),!Number.isFinite(t))return[0n,NaN]}else n=e;let r=!1;n.startsWith("-")?(r=!0,n=n.slice(1)):n.startsWith("+")&&(n=n.slice(1));let s=n.indexOf("."),o,a;s===-1?(o=n,a=""):(o=n.slice(0,s),a=n.slice(s+1)),o=o.replace(/^0+/,"")||"0";let u=o+a;if(u.length===0||!/^\d+$/.test(u))return[0n,NaN];let l=BigInt(u);r&&(l=-l);let c=-a.length;return Zt(l,c+t)}var ef=Math.log2(10),nf=Math.log10(2),tf=16,ar=1e6;function Ue(e,n){let t=Math.ceil(n*ef)+tf,i=BigInt(t);return e.exponent>=0?[e.significand*z(e.exponent)<<i,t]:[(e.significand<<i)/z(-e.exponent),t]}function Ze(e,n,t){if(e===0n)return h.ZERO;let i=e<0n,r=i?-e:e,s=BigInt(n),o=He(r)-n,a=Math.floor(o*nf),u=t+4-a,l,c;if(u>=0)l=r*z(u)+(1n<<s-1n)>>s,c=-u;else{let p=z(-u)<<s;l=(r+p/2n)/p,c=-u}if(l===0n)return h.ZERO;let f=ce(l);if(f>t){let p=f-t,d=z(p),b=d/2n,y=l%d;l=l/d,y>=b&&(l+=1n),c+=p}return J(i?-l:l,c)}function ve(e){let n=e.significand<0n?-e.significand:e.significand;return e.exponent+ce(n)-1}var oa=BigInt(Number.MAX_SAFE_INTEGER),yn=null;function ua(e){if(yn!==null){if(yn.bits===e)return yn.value;if(yn.bits>e)return yn.value>>BigInt(yn.bits-e)}let n=sr(10n<<BigInt(e),e);return yn={bits:e,value:n},n}h.prototype.sqrt=function(){if(this.isNaN())return h.NAN;if(this.isZero())return h.ZERO;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:h.NAN;if(this.significand<0n)return h.NAN;let e=h.precision,n=e+10,t=ve(this),i=Math.floor(t/2),r=J(this.significand,this.exponent-2*i),[s,o]=Ue(r,n),a=tt(s,o),u=Ze(a,o,e);return J(u.significand,u.exponent+i)};h.prototype.cbrt=function(){if(this.isNaN())return h.NAN;if(this.isZero())return h.ZERO;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:h.NEGATIVE_INFINITY;if(this.significand<0n)return this.neg().cbrt().neg();let e=h.precision,n=e+10,t=ve(this),i=Math.floor(t/3),r=J(this.significand,this.exponent-3*i),[s,o]=Ue(r,n),a=s<<BigInt(2*o),u,l=r.toNumber();if(o<=1e3&&Number.isFinite(l)&&l>0){let p=Number(1n<<BigInt(o)),d=Math.cbrt(l);Number.isFinite(d)&&d>0?(u=BigInt(Math.floor(d*p)),u===0n&&(u=1n)):u=aa(a)}else u=aa(a);let c;do{c=u;let p=u*u;if(p===0n){u=1n;break}u=(2n*u+a/p)/3n}while(xe(u-c)>1n);{let p=(2n*u+a/(u*u))/3n,d=xe(u*u*u-a);xe(p*p*p-a)<d&&(u=p)}let f=Ze(u,o,e);return J(f.significand,f.exponent+i)};h.sqrt=function(e){return e.sqrt()};h.cbrt=function(e){return e.cbrt()};h.prototype.exp=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:h.ZERO;if(this.isZero())return h.ONE;if(ve(this)>=17)return this.significand>0n?h.POSITIVE_INFINITY:h.ZERO;let e=h.precision,n=this.significand<0n?-this.significand:this.significand,t=Math.max(0,this.exponent+ce(n)),i=e+20+t,[r,s]=Ue(this,i),o=ua(s),a=r/o,u=r-a*o;if(u<0n&&(a-=1n,u+=o),a>oa||a<-oa)return a>0n?h.POSITIVE_INFINITY:h.ZERO;let l=Ze(zt(u,s),s,e),c=l.exponent+Number(a);return Number.isSafeInteger(c)?J(l.significand,c):a>0n?h.POSITIVE_INFINITY:h.ZERO};h.prototype.ln=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:h.NAN;if(this.isZero())return h.NEGATIVE_INFINITY;if(this.significand<0n)return h.NAN;if(this.eq(1))return h.ZERO;let e=h.precision,n=this.significand,t=ce(n),i=this.exponent+t-1,r=J(n,-(t-1)),s=Math.abs(i).toString().length,o=e+20+s,[a,u]=Ue(r,o),l=ua(u),c=sr(a,u)+BigInt(i)*l;return Ze(c,u,e)};h.prototype.log=function(e){let n=e instanceof h?e:new h(e);return this.ln().div(n.ln())};h.exp=function(e){return e.exp()};h.ln=function(e){return e.ln()};h.log10=function(e){return e.log(10)};h.log2=function(e){return e.log(2)};h.prototype.sin=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return h.NAN;if(this.isZero())return h.ZERO;let e=h.precision,n=ve(this);if(n<0&&-2*n>=e+4)return this.toPrecision(e);let t=e+15+(n<0?-n:0);if(n+t+30>ar)return h.NAN;let[i,r]=Ue(this,t),[s]=Ut(i,r);return Ze(s,r,e)};h.prototype.cos=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return h.NAN;if(this.isZero())return h.ONE;let e=h.precision,n=e+15;if(ve(this)+n+30>ar)return h.NAN;let[i,r]=Ue(this,n),[,s]=Ut(i,r);return Ze(s,r,e)};h.prototype.tan=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return h.NAN;if(this.isZero())return h.ZERO;let e=h.precision,n=ve(this);if(n<0&&-2*n>=e+4)return this.toPrecision(e);let t=e+15+(n<0?-n:0);if(n+t+30>ar)return h.NAN;let[i,r]=Ue(this,t),[s,o]=Ut(i,r);if(o===0n)return s>0n?h.POSITIVE_INFINITY:h.NEGATIVE_INFINITY;let a=(s<<BigInt(r))/o;return Ze(a,r,e)};h.prototype.atan=function(){if(this.isNaN())return h.NAN;if(this.isZero())return h.ZERO;if(!this.isFinite()){let o=h.PI.div(h.TWO);return this.significand>0n?o:o.neg()}let e=h.precision,n=ve(this);if(n<0&&-2*n>=e+4)return this.toPrecision(e);let t=e+15+(n<0?-n:0),[i,r]=Ue(this,t),s=nt(i,r);return Ze(s,r,e)};h.prototype.asin=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return h.NAN;if(this.isZero())return h.ZERO;let e=this.abs(),n=h.ONE;if(e.gt(n))return h.NAN;if(e.eq(n)){let d=h.PI.div(h.TWO);return this.significand>0n?d:d.neg()}let t=h.precision,i=ve(this);if(i<0&&-2*i>=t+4)return this.toPrecision(t);let r=t+20+(i<0?-i:0),[s,o]=Ue(this,r),a=1n<<BigInt(o),u=Xo(s,s,o),l=a-u,c=tt(l,o),f=Qo(s,c,o),p=nt(f,o);return Ze(p,o,t)};h.prototype.acos=function(){return this.isNaN()?h.NAN:this.isFinite()?this.abs().gt(h.ONE)?h.NAN:this.eq(1)?h.ZERO:this.eq(-1)?h.PI:h.PI.div(h.TWO).sub(this.asin()):h.NAN};h.sin=function(e){return e.sin()};h.cos=function(e){return e.cos()};h.tan=function(e){return e.tan()};h.asin=function(e){return e.asin()};h.acos=function(e){return e.acos()};h.atan=function(e){return e.atan()};h.atan2=function(e,n){let t=e instanceof h?e:new h(e);if(t.isNaN()||n.isNaN())return h.NAN;let i=h.PI,r=i.div(h.TWO);if(n.isZero())return t.isZero()?h.ZERO:t.significand>0n?r:r.neg();let s=t.div(n);return n.significand>0n?s.atan():t.significand>=0n?s.atan().add(i):s.atan().sub(i)};h.prototype.sinh=function(){if(this.isNaN())return h.NAN;if(this.isZero())return h.ZERO;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:h.NEGATIVE_INFINITY;let e=h.precision,n=ve(this);if(n<0){if(-2*n>=e+4)return this.toPrecision(e);let r=h.precision;h.precision=e-n+5;try{let s=this.exp();return s.sub(s.inv()).div(h.TWO).toPrecision(e)}finally{h.precision=r}}if(Math.abs(this.toNumber())>1.16*(e+3)){let r=this.abs().exp().div(h.TWO);return this.significand>0n?r:r.neg()}let t=this.exp(),i=t.inv();return t.sub(i).div(h.TWO)};h.prototype.cosh=function(){if(this.isNaN())return h.NAN;if(this.isZero())return h.ONE;if(!this.isFinite())return h.POSITIVE_INFINITY;let e=h.precision;if(Math.abs(this.toNumber())>1.16*(e+3))return this.abs().exp().div(h.TWO);let n=this.exp(),t=n.inv();return n.add(t).div(h.TWO)};h.prototype.tanh=function(){if(this.isNaN())return h.NAN;if(this.isZero())return h.ZERO;if(!this.isFinite())return this.significand>0n?h.ONE:h.NEGATIVE_ONE;let e=h.precision,n=ve(this);if(n<0){if(-2*n>=e+4)return this.toPrecision(e);let i=h.precision;h.precision=e-n+5;try{let r=this.mul(h.TWO).exp();return r.sub(h.ONE).div(r.add(h.ONE)).toPrecision(e)}finally{h.precision=i}}if(Math.abs(this.toNumber())>1.16*(e+3))return this.significand>0n?h.ONE:h.NEGATIVE_ONE;let t=this.mul(h.TWO).exp();return t.sub(h.ONE).div(t.add(h.ONE))};h.sinh=function(e){return e.sinh()};h.cosh=function(e){return e.cosh()};h.tanh=function(e){return e.tanh()};h.prototype.expm1=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:h.NEGATIVE_ONE;if(this.isZero())return h.ZERO;let e=h.precision,n=ve(this);if(n<0&&-n>=e+2)return this.toPrecision(e);if(n<0){let t=h.precision;h.precision=e-n+5;try{return this.exp().sub(h.ONE).toPrecision(e)}finally{h.precision=t}}return this.exp().sub(h.ONE)};h.prototype.log1p=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:h.NAN;if(this.isZero())return h.ZERO;let e=h.ONE.add(this);if(e.isZero())return h.NEGATIVE_INFINITY;if(e.significand<0n)return h.NAN;let n=h.precision,t=ve(this);if(t<0&&-t>=n+2)return this.toPrecision(n);if(t<0){let i=h.precision;h.precision=n-t+5;try{return h.ONE.add(this).ln().toPrecision(n)}finally{h.precision=i}}return h.ONE.add(this).ln()};h.prototype.asinh=function(){if(this.isNaN())return h.NAN;if(this.isZero())return h.ZERO;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:h.NEGATIVE_INFINITY;let e=this.significand<0n,n=this.abs(),t=h.precision,i=ve(this);if(i<0&&-2*i>=t+4)return this.toPrecision(t);let r=()=>n.add(n.mul(n).add(h.ONE).sqrt()).ln(),s;if(i<0){let o=h.precision;h.precision=t-i+5;try{s=r().toPrecision(t)}finally{h.precision=o}}else s=r();return e?s.neg():s};h.prototype.acosh=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:h.NAN;if(this.lt(h.ONE))return h.NAN;if(this.eq(1))return h.ZERO;let e=this.sub(h.ONE).div(h.TWO).sqrt();return h.TWO.mul(e.asinh())};h.prototype.atanh=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return h.NAN;if(this.isZero())return h.ZERO;let e=this.abs();if(e.eq(1))return this.significand>0n?h.POSITIVE_INFINITY:h.NEGATIVE_INFINITY;if(e.gt(h.ONE))return h.NAN;let n=h.precision,t=ve(this);if(-2*t>=n+4)return this.toPrecision(n);let i=h.precision;h.precision=n-t+5;try{return h.ONE.add(this).div(h.ONE.sub(this)).ln().div(h.TWO).toPrecision(n)}finally{h.precision=i}};h.prototype.nthRoot=function(e){if(this.isNaN()||!Number.isInteger(e)||e===0)return h.NAN;if(e===1)return this;if(e===2)return this.sqrt();if(e===3)return this.cbrt();if(e<0)return this.nthRoot(-e).inv();if(this.isZero())return h.ZERO;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:e%2===0?h.NAN:h.NEGATIVE_INFINITY;if(this.significand<0n)return e%2===0?h.NAN:this.neg().nthRoot(e).neg();let n=h.precision,t=h.precision;h.precision=n+8;try{return h.exp(this.ln().div(new h(e))).toPrecision(n)}finally{h.precision=t}};h.asinh=function(e){return e.asinh()};h.acosh=function(e){return e.acosh()};h.atanh=function(e){return e.atanh()};h.expm1=function(e){return e.expm1()};h.log1p=function(e){return e.log1p()};h.nthRoot=function(e,n){return e.nthRoot(n)};function aa(e){let n=He(e);if(n<=1023){let u=Math.cbrt(Number(e));if(Number.isFinite(u)&&u>=1)return BigInt(Math.floor(u))}let t=n-51,i=Number(e>>BigInt(t)),r=Math.cbrt(i),s=Math.floor(t/3),o=t%3;o===1&&(r*=1.2599210498948732),o===2&&(r*=1.5874010519681994);let a=BigInt(Math.round(r))<<BigInt(s);return a>0n?a:1n}var gh=[BigInt(4),BigInt(2),BigInt(4),BigInt(2),BigInt(4),BigInt(6),BigInt(2),BigInt(6)];var rf=53,la=Math.floor(Math.log10(Math.pow(2,rf))),sf=1e-10,Re=1e6;var Fn=1e4;function xn(e,n){if(e===0)return n;if(n===0||e===n)return e;if(!Number.isInteger(e)||!Number.isInteger(n))return NaN;for(;n!==0;)[e,n]=[n,e%n];return e<0?-e:e}function ot(e,n){if(e===0||n===0)return 0;let t=BigInt(e)*BigInt(n)/BigInt(xn(e,n));return t<0n&&(t=-t),Number(t)}function at(e){if(!Number.isInteger(e)||e<0)return NaN;if(e>=170)return 1/0;let n=1;for(let t=2;t<=e;t++)n=n*t;return n}function ut(e){if(!Number.isInteger(e)||e<0)return NaN;if(e<0)return NaN;if(e<=1)return 1;let n=e;for(;e>2;)e-=2,n*=e;return n}function lt(e,n=sf){return typeof e=="number"&&Math.abs(e)<=n?0:e}function of(e,n,t){let s=!Number.isFinite(n),o=d=>s?1/d:n+d,a=(d,b,y)=>{let E=.01*Math.max(1,Math.abs(y));for(let N=1;N<=5;N++){let k=e(o(d*Math.pow(b/d,N/6)));if(!Number.isFinite(k)||Math.abs(k-y)>E)return!1}return!0},u=s?1/t:t,l=0,c=!1,f=NaN,p=NaN;for(let d=1;d<=60;d++){let b=e(o(u));if(!Number.isFinite(b))return d-1;let y=Math.abs(b);if(d===1){l=y,f=y,p=u,u*=.125;continue}if(Math.abs(y-f)<=1e-10*Math.max(1,y))return a(p,u,b)?1/0:0;if(c&&l>1e-6&&y<1e-8*l)return d-1;y>l&&(c=!0,l=y),f=y,p=u,u*=.125}return 1/0}function Yt(e,n,t=1,i){if(t===0){let u=Yt(e,n,-1,i),l=Yt(e,n,1,i);return u===void 0||l===void 0?NaN:Math.abs(u-l)>1e-5?NaN:(u+l)/2}let r=t>0?1:-1,s=of(e,n,r);if(s===0)return NaN;let[o,a]=er(e,n,{step:r,deadline:i,...Number.isFinite(s)?{maxeval:s}:{}});return Number.isFinite(o)&&a>1e-6*Math.max(1,Math.abs(o))?NaN:o}var Wt=["number","finite_number","complex","finite_complex","imaginary","real","finite_real","rational","finite_rational","integer","finite_integer","non_finite_number"],ur=["indexed_collection","list","tuple"],Xt=[...ur,"collection","set","record","dictionary"],Qt=["scalar",...Wt,"boolean","string"],lr=["value","color",...Xt,...Qt],cr=["expression","symbol","function",...lr],fr=["any","unknown","nothing","never","error",...cr],Kt=new Set(Wt),ca=new Set(Xt),fa=new Set(Qt),vn=new Set(fr);function pa(e){return typeof e!="string"?!1:vn.has(e)}function ei(e){return typeof e=="string"?vn.has(e):typeof e!="object"||!("kind"in e)?!1:e.kind==="signature"||e.kind==="union"||e.kind==="intersection"||e.kind==="negation"||e.kind==="value"||e.kind==="tuple"||e.kind==="list"||e.kind==="record"||e.kind==="dictionary"||e.kind==="set"||e.kind==="symbol"||e.kind==="expression"||e.kind==="numeric"||e.kind==="collection"||e.kind==="indexed_collection"||e.kind==="reference"}var ni=class{input;pos=0;line=1;column=1;tokens=[];constructor(n){this.input=n}saveState(){return{pos:this.pos,line:this.line,column:this.column,tokens:[...this.tokens]}}restoreState(n){this.pos=n.pos,this.line=n.line,this.column=n.column,this.tokens=n.tokens}error(n){throw new Error(`Lexer error at line ${this.line}, column ${this.column}: ${n}`)}peek(n=0){let t=this.pos+n;return t<this.input.length?this.input[t]:""}advance(){let n=this.input[this.pos++];return n===`
|
|
1
|
+
/** Compute Engine 0.64.0 */
|
|
2
|
+
var je=class extends Error{cause;value;constructor({message:n,value:t,cause:i}={}){super(n??"Operation canceled"),t&&(this.value=t),this.cause=i,this.name="CancellationError"}};function et(e){if(e!==void 0&&Date.now()>=e)throw new je({cause:"timeout",message:"Timeout exceeded"})}var Vt;function qt(){return Vt}function Jt(e,n){let t=Vt;Vt=e;try{return n()}finally{Vt=t}}function Ki(e,n){let t=Date.now();for(;;){let{done:i,value:r}=e.next();if(i)return r;if(Date.now()-t>=n)throw new je({value:r,cause:"timeout",message:`Timeout exceeded (${n}ms)`})}}function er(e,n,t={}){let{contract:i=.125,step:r=1,power:s=2,atol:o=1e-16,rtol:a=o>0?0:Math.sqrt(Number.EPSILON),maxeval:u=1e6,breaktol:l=2,deadline:c=qt()}=t;return isFinite(n)?Jt(c,()=>{let f=r,p=Math.pow(1/i,s),d=e(n+f),b=[d],y=1/0,E=1;for(;E<u;){et(c),E+=1,f*=i,b.push(e(n+f));let N=p,k=1/0;for(let $=b.length-2;$>=0;$--){let L=b[$];b[$]=b[$+1]+(b[$+1]-b[$])/(N-1);let O=Math.abs(b[$]-L);k=Math.min(k,O),O<y&&(d=b[$],y=O),N*=p}if(k>l*y||!isFinite(k)||y<=Math.max(a*Math.abs(d),o))break}return[d,y]}):er(f=>e(1/f),1/n,{rtol:a,atol:o,maxeval:u,contract:Math.abs(i)>1?1/i:i,step:1/r,power:s,deadline:c})}var Zo=new Map,Oc=1e5;function z(e){if(e<=Oc){let n=Zo.get(e);return n===void 0&&(n=10n**BigInt(e),Zo.set(e,n)),n}return 10n**BigInt(e)}function He(e){if(e<0n&&(e=-e),e===0n)return 0;let n=0,t=1;for(;e>>BigInt(t)>0n;)t*=2;for(let i=t>>1;i>=1;i>>=1)e>>BigInt(i)>0n&&(n+=i,e>>=BigInt(i));return n+1}function Xo(e,n,t){return e*n>>BigInt(t)}function Qo(e,n,t){return(e<<BigInt(t))/n}function tt(e,n){if(e===0n)return 0n;if(e<0n)throw new RangeError("fpsqrt: negative input");let t=e<<BigInt(n),i;if(n<Lc){i=ir(t);let a;do a=i,i=(i+t/i)/2n;while(xe(i-a)>1n)}else i=rr(t,He(t));let r=(i+t/i)/2n,s=xe(i*i-t);return xe(r*r-t)<s?r:i}function ir(e){let n=He(e);if(n<=1023){let o=Math.sqrt(Number(e));if(Number.isFinite(o)&&o>=1)return BigInt(Math.floor(o))}let t=n-52,i=Number(e>>BigInt(t)),r=Math.sqrt(i);t&1&&(r*=Math.SQRT2);let s=BigInt(Math.round(r))<<BigInt(t>>1);return s>0n?s:1n}var Ko=1024,Lc=640;function rr(e,n){if(n<Ko){let s=ir(e),o;do o=s,s=(s+e/s)/2n;while(xe(s-o)>1n);for(;s*s>e;)s-=1n;for(;(s+1n)*(s+1n)<=e;)s+=1n;return s}let t=n>>2<<1,i=rr(e>>BigInt(t),n-t)<<BigInt(t>>1),r;do r=i,i=(i+e/i)/2n;while(xe(i-r)>1n);for(;i*i>e;)i-=1n;for(;(i+1n)*(i+1n)<=e;)i+=1n;return i}function xe(e){return e<0n?-e:e}function ce(e){if(e===0n)return 1;if(e<0n&&(e=-e),e<0x20000000000000n)return Math.floor(Math.log10(Number(e)))+1;let n=0,t=e,i=1;for(;t>>BigInt(i)>0n;)i*=2;for(let s=i>>1;s>=1;s>>=1)t>>BigInt(s)>0n&&(n+=s,t>>=BigInt(s));n+=1;let r=Math.ceil(n*.30102999566398);return e<z(r-1)?r-1:e>=z(r)?r+1:r}function zt(e,n){let t=BigInt(n),i=1n<<t;if(e===0n)return i;let r=0,s=e,o=i>>1n;for(;xe(s)>o;)s=s/2n,r++;let a=i,u=s;a+=u;for(let l=2;u=(u*s>>t)/BigInt(l),u!==0n;l++)a+=u;for(let l=0;l<r;l++)a=a*a>>t;return a}var Bc=2300;function sr(e,n){let t=1n<<BigInt(n);if(e<=0n)throw new RangeError("fpln: input must be positive");return e===t?0n:n>=Bc?Jc(e,n):Vc(e,n)}function Vc(e,n){let t=BigInt(n),i=1n<<t,r=Number(e),s=Number(i),o,a=e,u=0,l=2;if(Number.isFinite(r)&&Number.isFinite(s)&&r>0&&s>0){let f=r/s;if(Number.isFinite(f)&&f>0){let p=Math.log(f);Number.isFinite(p)?(o=BigInt(Math.round(p*s)),l=48):o=nr(e,n)}else o=nr(e,n)}else{a=e;let f=i<<1n,p=i>>1n;for(;a>f||a<p;)a=tt(a,n),u++;o=nr(a,n)}for(let f=Math.min(n,Math.max(8,2*l));f<n;){let p=BigInt(f),d=BigInt(n-f),b=o>>d,y=zt(b,f);if(y===0n){o=o/2n;continue}let E=a>>d;o=b+(E<<p)/y-(1n<<p)<<d,f=Math.min(n,2*f)}let c=0n;for(let f=0;f<100;f++){let p=zt(o,n);if(p===0n){o=o/2n;continue}let d=o+(a<<t)/p-i,b=xe(d-o);if(b<=1n||b<100000n&&c>0n&&c<100000n&&b*4n>=c)break;c=b,o=d}for(let f=0;f<u;f++)o=2n*o;return o}var gn=null;function qc(e){if(gn!==null){if(gn.bits===e)return gn.value;if(gn.bits>e)return gn.value>>BigInt(gn.bits-e)}let n=Math.ceil(e*Ht)+12,t;if(n<=Wo.length){let i=Wo.slice(0,n);t=(BigInt(i)<<BigInt(e))/z(i.length)}else t=Zc(e);return gn={bits:e,value:t},t}function Jc(e,n){let t=BigInt(n),i=He(e)-n,r=Math.max(2,Math.ceil(n/2+4-i)),s=e<<BigInt(r-2),o=1n<<t,a=s;for(;xe(o-a)>1n;){let l=o+a>>1n;a=it(o*a),o=l}return jt(n)*s/(2n*o)-BigInt(r)*qc(n)}var Yo=6243314768165359n;function nr(e,n){let t=BigInt(He(e)-n);return n>=53?t*Yo<<BigInt(n-53):t*Yo>>BigInt(53-n)}var Dn="314159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034861045432664821339360726024914127372458700660631558817488152092096282925409171536436789259036001133053054882046652138414695194151160943305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912983367336244065664308602139494639522473719070217986094370277053921717629317675238467481846766940513200056812714526356082778577134275778960917363717872146844090122495343014654958537105079227968925892354201995611212902196086403441815981362977477130996051870721134999999837297804995105973173281609631859502445945534690830264252230825334468503526193118817101000313783875288658753320838142061717766914730359825349042875546873115956286388235378759375195778185778053217122680661300192787661119590921642019893809525720106548586327886593615338182796823030195203530185296899577362259941389124972177528347913151557485724245415069595082953311686172785588907509838175463746493931925506040092770167113900984882401285836160356370766010471018194295559619894676783744944825537977472684710404753464620804668425906949129331367702898915210475216205696602405803815019351125338243003558764024749647326391419927260426992279678235478163600934172164121992458631503028618297455570674983850549458858692699569092721079750930295532116534498720275596023648066549911988183479775356636980742654252786255181841757467289097777279380008164706001614524919217321721477235014144197356854816136115735255213347574184946843852332390739414333454776241686251898356948556209921922218427255025425688767179049460165346680498862723279178608578438382796797668145410095388378636095068006422512520511739298489608412848862694560424196528502221066118630674427862203919494504712371378696095636437191728746776465757396241389086583264599581339047802759009946576407895126946839835259570982582262052248940772671947826848260147699090264013639443745530506820349625245174939965143142980919065925093722169646151570985838741059788595977297549893016175392846813826868386894277415599185592524595395943104997252468084598727364469584865383673622262609912460805124388439045124413654976278079771569143599770012961608944169486855584840635",Ht=Math.log10(2),Wo="693147180559945309417232121458176568075500134360255254120680009493393621969694715605863326996418687542001481020570685733685520235758130557032670751635075961930727570828371435190307038623891673471123350115364497955239120475172681574932065155524734139525882950453007095326366642654104239157814952043740430385500801944170641671518644712839968171784546957026271631064546150257207402481637773389638550695260668341137273873722928956493547025762652098859693201965058554764703306793654432547632744951250406069438147104689946506220167720424524529612687946546193165174681392672504103802546259656869144192871608293803172714367782654877566485085674077648451464439940461422603193096735402574446070308096085047486638523138181676751438667476647890881437141985494231519973548803751658612753529166100071053558249879414729509293113897155998205654392871700072180857610252368892132449713893203784393530887748259701715591070882368362758984258918535302436342143670611892367891923723146723217205340164925687274778234453534764811494186423867767744060695626573796008670762571991847340226514628379048830620330611446300737194890027436439650025809365194430411911506080948793067865158870900605203468429736193841289652556539686022194122924207574321757489097706752687115817051137009158942665478595964890653058460258668382940022833005382074005677053046787001841624044188332327983863490015631218895606505531512721993983320307514084260914790012651682434438935724727882054862715527418772430024897945401961872339808608316648114909306675193393128904316413706813977764981769748689038877899912965036192707108892641052309247839173735012298424204995689359922066022046549415106139187885744245577510206837030866619480896412186807790208181588580001688115973056186676199187395200766719214592236720602539595436541655311295175989940056000366513567569051245926825743946483168332624901803824240824231452306140963805700702551387702681785163069025513703234053802145019015374029509942262995779647427138157363801729873940704242179972266962979939312706935747240493386530879758721699645129446491883771156701678598804981838896784134938314014073166472765327635919233511233389338709513209059272185471328975470797891384445466676192702885533423429899321803769154973340267546758873236778342916191810430116091695265547859732891763545556742863877463987101912431754255888301206779210280341206879759143081283307230300883494705792496591005860012341561757413272465943",zc=13591409n,Gc=545140134n,jc=10939058860032000n,Hc=47.11;function Gt(e,n){if(n-e===1){let l,c;if(e===0)l=1n,c=1n;else{l=BigInt(6*e-5)*BigInt(2*e-1)*BigInt(6*e-1);let p=BigInt(e);c=p*p*p*jc}let f=l*(zc+Gc*BigInt(e));return e&1&&(f=-f),[l,c,f]}let t=e+n>>1,[i,r,s]=Gt(e,t),[o,a,u]=Gt(t,n);return[i*o,r*a,a*s+i*u]}function ea(e){return Math.max(2,Math.floor(e/Hc)+3)}function Uc(e){let[,n,t]=Gt(0,ea(e)),i=1n<<BigInt(e),r=it(10005n*i*i);return n*426880n*r/t}function na(e){let[,n,t]=Gt(0,ea(Math.ceil(e/Ht))),i=z(e),r=it(10005n*i*i);return n*426880n*r/t}function tr(e,n){if(n-e===1){let l=e===0?1n:BigInt(2*e-1),c=e===0?1n:9n*BigInt(2*e+1);return[l,c,l]}let t=e+n>>1,[i,r,s]=tr(e,t),[o,a,u]=tr(t,n);return[i*o,r*a,a*s+i*u]}function Zc(e){let n=Math.max(2,Math.ceil(e/3.169925)+5),[,t,i]=tr(0,n);return(i<<BigInt(e+1))/(3n*t)}function it(e){if(e<0n)throw new RangeError("bigintSqrt: negative input");if(e===0n)return 0n;let n=He(e);if(n>=Ko)return rr(e,n);let t=ir(e),i;do i=t,t=(t+e/t)/2n;while(xe(t-i)>1n);for(;t*t>e;)t-=1n;for(;(t+1n)*(t+1n)<=e;)t+=1n;return t}var bn=null;function jt(e){if(bn!==null){if(bn.bits===e)return bn.value;if(bn.bits>e)return bn.value>>BigInt(bn.bits-e)}let n=Yc(e);return bn={bits:e,value:n},n}function Yc(e){let n=Math.ceil(e*Ht)+12;if(n+1<=Dn.length){let t=Dn.slice(0,n+1);return(BigInt(t)<<BigInt(e))/z(t.length-1)}return Uc(e)}function Ut(e,n){let t=BigInt(n),i=1n<<t;if(e===0n)return[0n,i];let r=jt(n),s=2n*r,o=r/2n,a,u=xe(e);if(u>i<<30n){let O=He(u)-n+64,D=n+O,Z=e<<BigInt(O),q=2n*jt(D),H=Z%q;H<0n&&(H+=q),a=H>>BigInt(O)}else a=e%s;a<0n&&(a+=s);let l=1n,c=1n;a>3n*o?(a=s-a,l=-1n):a>r?(a=a-r,l=-1n,c=-1n):a>o&&(a=r-a,c=-1n);let f=Math.round(n*Ht),p=Math.min(18,Math.max(2,Math.ceil(.87*Math.sqrt(f)))),d=0,b=i>>BigInt(p);for(;a>b;)a=a/2n,d++;let y=a,E=i,N=a,k=i,$=a*a,L=2n*t;for(let O=2;;O+=2){if(k=(k*$>>L)/(BigInt(O)*BigInt(O-1)),k===0n){N=(N*$>>L)/(BigInt(O+1)*BigInt(O)),N!==0n&&(O%4===2?(E-=k,y-=N):(E+=k,y+=N));break}if(N=(N*$>>L)/(BigInt(O+1)*BigInt(O)),O%4===2?(E-=k,y-=N):(E+=k,y+=N),N===0n)break}for(let O=0;O<d;O++){let D=2n*y*E>>t,Z=(2n*E*E>>t)-i;y=D,E=Z}return[l*y,c*E]}function nt(e,n){if(e===0n)return 0n;if(e<0n)return-nt(-e,n);let t=BigInt(n),i=1n<<t,s=jt(n)/2n;if(e>i){let d=(i<<t)/e;return s-nt(d,n)}let o=4n*i/10n,a=0,u=e;for(;u>o;){let d=u*u,b=(i<<t)+d>>t,y=tt(b,n);u=(u<<t)/(i+y),a++}let l=u,c=u,f=u*u,p=2n*t;for(let d=3;c=c*f>>p,c!==0n;d+=2)d%4===3?l-=c/BigInt(d):l+=c/BigInt(d);for(let d=0;d<a;d++)l=2n*l;return l}var or=NaN,h=class e{static precision=50;static ZERO=Object.freeze(Object.assign(Object.create(e.prototype),{significand:0n,exponent:0}));static ONE=Object.freeze(Object.assign(Object.create(e.prototype),{significand:1n,exponent:0}));static TWO=Object.freeze(Object.assign(Object.create(e.prototype),{significand:2n,exponent:0}));static NEGATIVE_ONE=Object.freeze(Object.assign(Object.create(e.prototype),{significand:-1n,exponent:0}));static HALF=Object.freeze(Object.assign(Object.create(e.prototype),{significand:5n,exponent:-1}));static NAN=Object.freeze(Object.assign(Object.create(e.prototype),{significand:0n,exponent:NaN}));static POSITIVE_INFINITY=Object.freeze(Object.assign(Object.create(e.prototype),{significand:1n,exponent:1/0}));static NEGATIVE_INFINITY=Object.freeze(Object.assign(Object.create(e.prototype),{significand:-1n,exponent:1/0}));static _piFullPrecision=null;static _piCache=null;static _piCachePrecision=0;static _eulerGammaCache=null;static _eulerGammaCachePrecision=0;static get PI(){let n=e.precision;if(e._piCache!==null&&e._piCachePrecision===n)return e._piCache;let t=n+4,i;if(t+1<=Dn.length)e._piFullPrecision===null&&(e._piFullPrecision=new e(Dn[0]+"."+Dn.slice(1))),i=e._piFullPrecision.toPrecision(t);else{let r=t+4;i=J(na(r),-r).toPrecision(t)}return e._piCache=i,e._piCachePrecision=n,i}static get EULER_GAMMA(){let n=e.precision;if(e._eulerGammaCache!==null&&e._eulerGammaCachePrecision>=n)return e._eulerGammaCache.toPrecision(n);let t=Qc(n);return e._eulerGammaCache=t,e._eulerGammaCachePrecision=n,t}significand;exponent;constructor(n){if(n instanceof e){this.significand=n.significand,this.exponent=n.exponent;return}if(typeof n=="bigint"){[this.significand,this.exponent]=Zt(n,0);return}if(typeof n=="number"){[this.significand,this.exponent]=Kc(n);return}[this.significand,this.exponent]=sa(n)}isNaN(){return Number.isNaN(this.exponent)}isZero(){return this.exponent===0&&this.significand===0n}isFinite(){return Number.isFinite(this.exponent)}isInteger(){return this.isFinite()&&this.exponent>=0}isPositive(){return this.significand>0n}isNegative(){return this.significand<0n}cmp(n){if(typeof n=="number"){if(Number.isNaN(n))return or;let d=this.exponent;if(Number.isNaN(d))return or;if(n===0)return this.significand===0n?0:this.significand>0n?1:-1;if(!Number.isFinite(d))return n===1/0?this.significand>0n?0:-1:n===-1/0?this.significand<0n?0:1:this.significand>0n?1:-1;if(this.significand===0n)return n>0?-1:1;if(n===1/0)return-1;if(n===-1/0)return 1;if(this.significand>0n!=n>0)return this.significand>0n?1:-1;if(Number.isInteger(n)&&d>=0&&d<=15){let b=this.significand*z(d),y=BigInt(n);return b<y?-1:b>y?1:0}n=new e(n)}let t=this.exponent,i=n.exponent,r=this.significand,s=n.significand;if(t!==t||i!==i)return or;if(!Number.isFinite(t)||!Number.isFinite(i))return!Number.isFinite(t)&&!Number.isFinite(i)?r===s?0:r>s?1:-1:Number.isFinite(t)?s>0n?-1:1:r>0n?1:-1;if(r===0n)return s===0n?0:s>0n?-1:1;if(s===0n)return r>0n?1:-1;if(r>0n&&s<0n)return 1;if(r<0n&&s>0n)return-1;if(t===i)return r<s?-1:r>s?1:0;let o=ce(r),a=ce(s),u=o+t,l=a+i;if(u!==l){let d=r>0n?1:-1;return u>l?d:-d}let c=r,f=s,p=Math.abs(t-i);if(p>1e3){let d=o,b=a,y=Math.max(d,b)+1;d<y&&(c=c*z(y-d)),b<y&&(f=f*z(y-b))}else t<i?f=f*z(p):c=c*z(p);return c<f?-1:c>f?1:0}eq(n){return typeof n=="number"?n===0?this.significand===0n&&this.exponent===0:n===1?this.significand===1n&&this.exponent===0:n===-1?this.significand===-1n&&this.exponent===0:Number.isInteger(n)&&Number.isFinite(this.exponent)&&this.exponent>=0&&this.exponent<=15?this.significand*z(this.exponent)===BigInt(n):this.cmp(n)===0:this.significand===n.significand&&this.exponent===n.exponent}lt(n){return this.cmp(n)===-1}lte(n){let t=this.cmp(n);return t===-1||t===0}gt(n){return this.cmp(n)===1}gte(n){let t=this.cmp(n);return t===1||t===0}add(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;if(Number.isFinite(t)&&Number.isFinite(i)){if(t===i)return J(this.significand+n.significand,t);let o=t-i;return o>0?J(this.significand*z(o)+n.significand,i):J(this.significand+n.significand*z(-o),t)}if(t!==t||i!==i)return e.NAN;let r=!Number.isFinite(t),s=!Number.isFinite(i);return r&&s?this.significand!==n.significand?e.NAN:this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:r?this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:n.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY}sub(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;if(Number.isFinite(t)&&Number.isFinite(i)){if(t===i)return J(this.significand-n.significand,t);let o=t-i;return o>0?J(this.significand*z(o)-n.significand,i):J(this.significand-n.significand*z(-o),t)}if(t!==t||i!==i)return e.NAN;let r=!Number.isFinite(t),s=!Number.isFinite(i);return r&&s?this.significand===n.significand?e.NAN:this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:r?this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:n.significand>0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY}mul(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;if(Number.isFinite(t)&&Number.isFinite(i))return J(this.significand*n.significand,t+i);if(t!==t||i!==i||this.significand===0n||n.significand===0n)return e.NAN;let r=this.significand>0n?1n:-1n,s=n.significand>0n?1n:-1n;return r*s>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY}neg(){let n=this.significand;return n===0n?this:Number.isFinite(this.exponent)?J(-n,this.exponent):n>0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY}abs(){return this.significand>=0n?this:Number.isFinite(this.exponent)?J(-this.significand,this.exponent):e.POSITIVE_INFINITY}floor(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=this.trunc();return this.significand<0n?t.sub(J(1n,0)):t}return this}ceil(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=this.trunc();return this.significand>0n?t.add(J(1n,0)):t}return this}round(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=J(5n,-1);return this.significand>0n?this.add(t).trunc():this.sub(t).trunc()}return this}trunc(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=this.significand/z(-n);return J(t===0n?0n:t,0)}return this}div(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent,r=this.significand,s=n.significand;if(Number.isFinite(t)&&Number.isFinite(i)){if(s===0n)return r===0n?e.NAN:r>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY;if(r===0n)return J(0n,0);let u=e.precision,l=10,c=r<0n?-r:r,f=s<0n?-s:s,p=ce(c),d=ce(f),b=u+l+Math.max(0,d-p),y=z(b),E=r*y/s,N=t-i-b;return J(E,N).toPrecision(u)}if(t!==t||i!==i)return e.NAN;let o=!Number.isFinite(t),a=!Number.isFinite(i);if(o&&a)return e.NAN;if(o){let u=r>0n?1n:-1n,l=s>0n?1n:s<0n?-1n:1n;return u*l>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY}return J(0n,0)}inv(){return J(1n,0).div(this)}divToward(n,t){typeof n=="number"&&(n=new e(n));let i=this.exponent,r=n.exponent,s=this.significand,o=n.significand;if(!Number.isFinite(i)||!Number.isFinite(r)||o===0n||s===0n)return this.div(n);let a=s<0n!=o<0n,u=s<0n?-s:s,l=o<0n?-o:o,c=e.precision,p=c+10+Math.max(0,ce(l)-ce(u)),d=u*z(p),b=d/l,y=d%l!==0n,E=i-r-p,N=a?t==="floor":t==="ceiling",[k,$]=ta(b,y,E,c,N);return J(a?-k:k,$)}sqrtToward(n){if(this.significand===0n)return this.exponent!==this.exponent?this:e.ZERO;if(!Number.isFinite(this.exponent))return this.significand>0n?e.POSITIVE_INFINITY:e.NAN;if(this.significand<0n)return e.NAN;let t=e.precision,i=4,r=this.significand,s=this.exponent,o=s+ce(r)-1,a=Math.floor(o/2),u=t+i-a;s+2*u<0&&(u=Math.ceil(-s/2)+1);let l=s+2*u,c=l>=0?r*z(l):r/z(-l),f=it(c),p=f*f!==c,[d,b]=ta(f,p,-u,t,n==="ceiling");return J(d,b)}mod(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;if(Number.isFinite(t)&&Number.isFinite(i)){if(n.significand===0n)return e.NAN;if(this.significand===0n)return J(0n,0);let r=t-i,s=r>=0?this.significand*z(r):this.significand,o=r>=0?n.significand:n.significand*z(-r),a=s/o;return this.sub(J(a,0).mul(n))}return t!==t||i!==i||!Number.isFinite(t)?e.NAN:new e(this)}pow(n){if(typeof n=="number"&&(n=new e(n)),this.isNaN()||n.isNaN()||!n.isFinite())return e.NAN;if(n.isInteger()){let l=n.toBigInt();if(l===0n)return J(1n,0);if(!this.isFinite())return l>0n?this.significand<0n&&l%2n!==0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY:J(0n,0);if(this.isZero())return l>0n?J(0n,0):e.POSITIVE_INFINITY;if(l<0n)return this.pow(n.neg()).inv();let c=this.significand<0n?-this.significand:this.significand,f=ce(c),p=f>15?f-15:0,d=p>0?Number(c/10n**BigInt(p)):Number(c),b=Math.log10(d)+p+this.exponent,y=Number(l)*b;if(y>9e15)return this.significand<0n&&l%2n!==0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY;if(y<-9e15)return J(0n,0);let E=e.precision,N=J(1n,0),k=this,$=l;for(;$>0n;)$&1n&&(N=N.mul(k).toPrecision(E)),$>>=1n,$>0n&&(k=k.mul(k).toPrecision(E));return N}if(!this.isFinite())return this.significand<0n?e.NAN:n.significand>0n?e.POSITIVE_INFINITY:e.ZERO;if(this.isZero())return n.significand>0n?e.ZERO:e.POSITIVE_INFINITY;if(this.significand<0n)return e.NAN;let t=this.significand,i=this.exponent+ce(t)-1,r=n.significand<0n?-n.significand:n.significand,o=n.exponent+ce(r)-1+Math.log10(Math.abs(i)*2.303+3)+1,a=Math.min(20,Math.max(2,Math.ceil(o)+2)),u=e.precision;e.precision=u+a;try{let l=Xc(this,u+a);return n.mul(l).exp().toPrecision(u)}finally{e.precision=u}}toNumber(){return Number.isFinite(this.exponent)?this.significand===0n?0:this.exponent===0?Number(this.significand):Number(this.toString()):this.exponent!==this.exponent?NaN:this.significand>0n?1/0:-1/0}toString(){if(!Number.isFinite(this.exponent))return this.exponent!==this.exponent?"NaN":this.significand>0n?"Infinity":"-Infinity";if(this.significand===0n)return"0";let n=this.significand<0n,t=(n?-this.significand:this.significand).toString(),i=t.length,r=i+this.exponent-1,s=n?"-":"";if(r>20||r<-6){let u=i===1?t:t[0]+"."+t.slice(1),l=r>=0?"+":"";return`${s}${u}e${l}${r}`}if(this.exponent>=0)return s+t+"0".repeat(this.exponent);let o=-this.exponent;if(o<i){let u=t.slice(0,i-o),l=t.slice(i-o);return`${s}${u}.${l}`}let a=o-i;return`${s}0.${"0".repeat(a)}${t}`}toFixed(n){let t=n??0;if(!Number.isFinite(this.exponent))return this.exponent!==this.exponent?"NaN":this.significand>0n?"Infinity":"-Infinity";let i=this.significand<0n,r=i?-this.significand:this.significand,s=this.exponent+t,o;if(s>=0)o=r*z(s);else{let f=z(-s),p=r/f,d=r%f,b=f/2n;d>b?o=p+1n:d<b||f%2n!==0n||p%2n===0n?o=p:o=p+1n}let a=i&&o!==0n?"-":"",u=o.toString();if(t===0)return`${a}${u}`;if(u.length<=t){let f=u.padStart(t,"0");return`${a}0.${f}`}let l=u.slice(0,u.length-t),c=u.slice(u.length-t);return`${a}${l}.${c}`}toPrecision(n){if(this.significand===0n||!Number.isFinite(this.exponent))return this;let t=this.significand<0n?-this.significand:this.significand,i=ce(t);if(i<=n)return this;let r=i-n,s=z(r),o=t/s,a=t-o*s,u=s/2n;(a>u||a===u&&o%2n!==0n)&&(o+=1n);let l=this.significand<0n?-o:o;return J(l,this.exponent+r)}toBigInt(){if(!Number.isFinite(this.exponent))throw this.exponent!==this.exponent?new RangeError("Cannot convert NaN to BigInt"):new RangeError("Cannot convert Infinity to BigInt");if(this.exponent>=0)return this.significand*z(this.exponent);let n=z(-this.exponent);return this.significand/n}},Wc=8,rt=[];function Xc(e,n){let t=e.significand,i=e.exponent;for(let s=rt.length-1;s>=0;s--){let o=rt[s];if(o.prec===n&&o.exp===i&&o.sig===t)return o.ln}let r=e.ln();return rt.push({sig:t,exp:i,prec:n,ln:r}),rt.length>Wc&&rt.shift(),r}function Qc(e){let n=e+20+Math.ceil(Math.log10(e+10)),t=h.precision;h.precision=n;try{let i=Math.ceil(n*Math.LN10/4)+5,r=new h(i),s=r.mul(r),o=h.ONE,a=h.ONE,u=h.ZERO,l=h.ZERO,c=h.ONE.div(new h(10).pow(n)),f=6*i+100;for(let p=1;p<=f;p++){let d=new h(p).mul(p);if(o=o.mul(s).div(d).toPrecision(n),l=l.add(h.ONE.div(p)).toPrecision(n),a=a.add(o).toPrecision(n),u=u.add(o.mul(l)).toPrecision(n),p>i&&o.lt(a.mul(c)))break}return u.div(a).sub(r.ln()).toPrecision(e)}finally{h.precision=t}}function J(e,n){let[t,i]=Zt(e,n),r=Object.create(h.prototype);return r.significand=t,r.exponent=i,r}function ta(e,n,t,i,r){if(e===0n)return[r&&n?1n:0n,t];let s=ce(e);if(s<=i)return[r&&n?e+1n:e,t];let o=s-i,a=z(o),u=e/a,l=n||e%a!==0n;return r&&l&&(u+=1n),[u,t+o]}var ia=1000000000n,ra=1000n;function Zt(e,n){if(e===0n)return[0n,0];for(;e%ia===0n;)e/=ia,n+=9;for(;e%ra===0n;)e/=ra,n+=3;for(;e%10n===0n;)e/=10n,n+=1;return[e,n]}function Kc(e){return Number.isNaN(e)?[0n,NaN]:e===1/0?[1n,1/0]:e===-1/0?[-1n,1/0]:Number.isInteger(e)?Zt(BigInt(e),0):sa(e.toString())}function sa(e){if(e=e.trim(),e===""||e==="NaN")return[0n,NaN];if(e==="Infinity"||e==="+Infinity")return[1n,1/0];if(e==="-Infinity")return[-1n,1/0];let n,t=0,i=e.search(/[eE]/);if(i!==-1){if(n=e.slice(0,i),t=Number(e.slice(i+1)),!Number.isFinite(t))return[0n,NaN]}else n=e;let r=!1;n.startsWith("-")?(r=!0,n=n.slice(1)):n.startsWith("+")&&(n=n.slice(1));let s=n.indexOf("."),o,a;s===-1?(o=n,a=""):(o=n.slice(0,s),a=n.slice(s+1)),o=o.replace(/^0+/,"")||"0";let u=o+a;if(u.length===0||!/^\d+$/.test(u))return[0n,NaN];let l=BigInt(u);r&&(l=-l);let c=-a.length;return Zt(l,c+t)}var ef=Math.log2(10),nf=Math.log10(2),tf=16,ar=1e6;function Ue(e,n){let t=Math.ceil(n*ef)+tf,i=BigInt(t);return e.exponent>=0?[e.significand*z(e.exponent)<<i,t]:[(e.significand<<i)/z(-e.exponent),t]}function Ze(e,n,t){if(e===0n)return h.ZERO;let i=e<0n,r=i?-e:e,s=BigInt(n),o=He(r)-n,a=Math.floor(o*nf),u=t+4-a,l,c;if(u>=0)l=r*z(u)+(1n<<s-1n)>>s,c=-u;else{let p=z(-u)<<s;l=(r+p/2n)/p,c=-u}if(l===0n)return h.ZERO;let f=ce(l);if(f>t){let p=f-t,d=z(p),b=d/2n,y=l%d;l=l/d,y>=b&&(l+=1n),c+=p}return J(i?-l:l,c)}function ve(e){let n=e.significand<0n?-e.significand:e.significand;return e.exponent+ce(n)-1}var oa=BigInt(Number.MAX_SAFE_INTEGER),yn=null;function ua(e){if(yn!==null){if(yn.bits===e)return yn.value;if(yn.bits>e)return yn.value>>BigInt(yn.bits-e)}let n=sr(10n<<BigInt(e),e);return yn={bits:e,value:n},n}h.prototype.sqrt=function(){if(this.isNaN())return h.NAN;if(this.isZero())return h.ZERO;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:h.NAN;if(this.significand<0n)return h.NAN;let e=h.precision,n=e+10,t=ve(this),i=Math.floor(t/2),r=J(this.significand,this.exponent-2*i),[s,o]=Ue(r,n),a=tt(s,o),u=Ze(a,o,e);return J(u.significand,u.exponent+i)};h.prototype.cbrt=function(){if(this.isNaN())return h.NAN;if(this.isZero())return h.ZERO;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:h.NEGATIVE_INFINITY;if(this.significand<0n)return this.neg().cbrt().neg();let e=h.precision,n=e+10,t=ve(this),i=Math.floor(t/3),r=J(this.significand,this.exponent-3*i),[s,o]=Ue(r,n),a=s<<BigInt(2*o),u,l=r.toNumber();if(o<=1e3&&Number.isFinite(l)&&l>0){let p=Number(1n<<BigInt(o)),d=Math.cbrt(l);Number.isFinite(d)&&d>0?(u=BigInt(Math.floor(d*p)),u===0n&&(u=1n)):u=aa(a)}else u=aa(a);let c;do{c=u;let p=u*u;if(p===0n){u=1n;break}u=(2n*u+a/p)/3n}while(xe(u-c)>1n);{let p=(2n*u+a/(u*u))/3n,d=xe(u*u*u-a);xe(p*p*p-a)<d&&(u=p)}let f=Ze(u,o,e);return J(f.significand,f.exponent+i)};h.sqrt=function(e){return e.sqrt()};h.cbrt=function(e){return e.cbrt()};h.prototype.exp=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:h.ZERO;if(this.isZero())return h.ONE;if(ve(this)>=17)return this.significand>0n?h.POSITIVE_INFINITY:h.ZERO;let e=h.precision,n=this.significand<0n?-this.significand:this.significand,t=Math.max(0,this.exponent+ce(n)),i=e+20+t,[r,s]=Ue(this,i),o=ua(s),a=r/o,u=r-a*o;if(u<0n&&(a-=1n,u+=o),a>oa||a<-oa)return a>0n?h.POSITIVE_INFINITY:h.ZERO;let l=Ze(zt(u,s),s,e),c=l.exponent+Number(a);return Number.isSafeInteger(c)?J(l.significand,c):a>0n?h.POSITIVE_INFINITY:h.ZERO};h.prototype.ln=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:h.NAN;if(this.isZero())return h.NEGATIVE_INFINITY;if(this.significand<0n)return h.NAN;if(this.eq(1))return h.ZERO;let e=h.precision,n=this.significand,t=ce(n),i=this.exponent+t-1,r=J(n,-(t-1)),s=Math.abs(i).toString().length,o=e+20+s,[a,u]=Ue(r,o),l=ua(u),c=sr(a,u)+BigInt(i)*l;return Ze(c,u,e)};h.prototype.log=function(e){let n=e instanceof h?e:new h(e);return this.ln().div(n.ln())};h.exp=function(e){return e.exp()};h.ln=function(e){return e.ln()};h.log10=function(e){return e.log(10)};h.log2=function(e){return e.log(2)};h.prototype.sin=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return h.NAN;if(this.isZero())return h.ZERO;let e=h.precision,n=ve(this);if(n<0&&-2*n>=e+4)return this.toPrecision(e);let t=e+15+(n<0?-n:0);if(n+t+30>ar)return h.NAN;let[i,r]=Ue(this,t),[s]=Ut(i,r);return Ze(s,r,e)};h.prototype.cos=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return h.NAN;if(this.isZero())return h.ONE;let e=h.precision,n=e+15;if(ve(this)+n+30>ar)return h.NAN;let[i,r]=Ue(this,n),[,s]=Ut(i,r);return Ze(s,r,e)};h.prototype.tan=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return h.NAN;if(this.isZero())return h.ZERO;let e=h.precision,n=ve(this);if(n<0&&-2*n>=e+4)return this.toPrecision(e);let t=e+15+(n<0?-n:0);if(n+t+30>ar)return h.NAN;let[i,r]=Ue(this,t),[s,o]=Ut(i,r);if(o===0n)return s>0n?h.POSITIVE_INFINITY:h.NEGATIVE_INFINITY;let a=(s<<BigInt(r))/o;return Ze(a,r,e)};h.prototype.atan=function(){if(this.isNaN())return h.NAN;if(this.isZero())return h.ZERO;if(!this.isFinite()){let o=h.PI.div(h.TWO);return this.significand>0n?o:o.neg()}let e=h.precision,n=ve(this);if(n<0&&-2*n>=e+4)return this.toPrecision(e);let t=e+15+(n<0?-n:0),[i,r]=Ue(this,t),s=nt(i,r);return Ze(s,r,e)};h.prototype.asin=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return h.NAN;if(this.isZero())return h.ZERO;let e=this.abs(),n=h.ONE;if(e.gt(n))return h.NAN;if(e.eq(n)){let d=h.PI.div(h.TWO);return this.significand>0n?d:d.neg()}let t=h.precision,i=ve(this);if(i<0&&-2*i>=t+4)return this.toPrecision(t);let r=t+20+(i<0?-i:0),[s,o]=Ue(this,r),a=1n<<BigInt(o),u=Xo(s,s,o),l=a-u,c=tt(l,o),f=Qo(s,c,o),p=nt(f,o);return Ze(p,o,t)};h.prototype.acos=function(){return this.isNaN()?h.NAN:this.isFinite()?this.abs().gt(h.ONE)?h.NAN:this.eq(1)?h.ZERO:this.eq(-1)?h.PI:h.PI.div(h.TWO).sub(this.asin()):h.NAN};h.sin=function(e){return e.sin()};h.cos=function(e){return e.cos()};h.tan=function(e){return e.tan()};h.asin=function(e){return e.asin()};h.acos=function(e){return e.acos()};h.atan=function(e){return e.atan()};h.atan2=function(e,n){let t=e instanceof h?e:new h(e);if(t.isNaN()||n.isNaN())return h.NAN;let i=h.PI,r=i.div(h.TWO);if(n.isZero())return t.isZero()?h.ZERO:t.significand>0n?r:r.neg();let s=t.div(n);return n.significand>0n?s.atan():t.significand>=0n?s.atan().add(i):s.atan().sub(i)};h.prototype.sinh=function(){if(this.isNaN())return h.NAN;if(this.isZero())return h.ZERO;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:h.NEGATIVE_INFINITY;let e=h.precision,n=ve(this);if(n<0){if(-2*n>=e+4)return this.toPrecision(e);let r=h.precision;h.precision=e-n+5;try{let s=this.exp();return s.sub(s.inv()).div(h.TWO).toPrecision(e)}finally{h.precision=r}}if(Math.abs(this.toNumber())>1.16*(e+3)){let r=this.abs().exp().div(h.TWO);return this.significand>0n?r:r.neg()}let t=this.exp(),i=t.inv();return t.sub(i).div(h.TWO)};h.prototype.cosh=function(){if(this.isNaN())return h.NAN;if(this.isZero())return h.ONE;if(!this.isFinite())return h.POSITIVE_INFINITY;let e=h.precision;if(Math.abs(this.toNumber())>1.16*(e+3))return this.abs().exp().div(h.TWO);let n=this.exp(),t=n.inv();return n.add(t).div(h.TWO)};h.prototype.tanh=function(){if(this.isNaN())return h.NAN;if(this.isZero())return h.ZERO;if(!this.isFinite())return this.significand>0n?h.ONE:h.NEGATIVE_ONE;let e=h.precision,n=ve(this);if(n<0){if(-2*n>=e+4)return this.toPrecision(e);let i=h.precision;h.precision=e-n+5;try{let r=this.mul(h.TWO).exp();return r.sub(h.ONE).div(r.add(h.ONE)).toPrecision(e)}finally{h.precision=i}}if(Math.abs(this.toNumber())>1.16*(e+3))return this.significand>0n?h.ONE:h.NEGATIVE_ONE;let t=this.mul(h.TWO).exp();return t.sub(h.ONE).div(t.add(h.ONE))};h.sinh=function(e){return e.sinh()};h.cosh=function(e){return e.cosh()};h.tanh=function(e){return e.tanh()};h.prototype.expm1=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:h.NEGATIVE_ONE;if(this.isZero())return h.ZERO;let e=h.precision,n=ve(this);if(n<0&&-n>=e+2)return this.toPrecision(e);if(n<0){let t=h.precision;h.precision=e-n+5;try{return this.exp().sub(h.ONE).toPrecision(e)}finally{h.precision=t}}return this.exp().sub(h.ONE)};h.prototype.log1p=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:h.NAN;if(this.isZero())return h.ZERO;let e=h.ONE.add(this);if(e.isZero())return h.NEGATIVE_INFINITY;if(e.significand<0n)return h.NAN;let n=h.precision,t=ve(this);if(t<0&&-t>=n+2)return this.toPrecision(n);if(t<0){let i=h.precision;h.precision=n-t+5;try{return h.ONE.add(this).ln().toPrecision(n)}finally{h.precision=i}}return h.ONE.add(this).ln()};h.prototype.asinh=function(){if(this.isNaN())return h.NAN;if(this.isZero())return h.ZERO;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:h.NEGATIVE_INFINITY;let e=this.significand<0n,n=this.abs(),t=h.precision,i=ve(this);if(i<0&&-2*i>=t+4)return this.toPrecision(t);let r=()=>n.add(n.mul(n).add(h.ONE).sqrt()).ln(),s;if(i<0){let o=h.precision;h.precision=t-i+5;try{s=r().toPrecision(t)}finally{h.precision=o}}else s=r();return e?s.neg():s};h.prototype.acosh=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:h.NAN;if(this.lt(h.ONE))return h.NAN;if(this.eq(1))return h.ZERO;let e=this.sub(h.ONE).div(h.TWO).sqrt();return h.TWO.mul(e.asinh())};h.prototype.atanh=function(){if(this.isNaN())return h.NAN;if(!this.isFinite())return h.NAN;if(this.isZero())return h.ZERO;let e=this.abs();if(e.eq(1))return this.significand>0n?h.POSITIVE_INFINITY:h.NEGATIVE_INFINITY;if(e.gt(h.ONE))return h.NAN;let n=h.precision,t=ve(this);if(-2*t>=n+4)return this.toPrecision(n);let i=h.precision;h.precision=n-t+5;try{return h.ONE.add(this).div(h.ONE.sub(this)).ln().div(h.TWO).toPrecision(n)}finally{h.precision=i}};h.prototype.nthRoot=function(e){if(this.isNaN()||!Number.isInteger(e)||e===0)return h.NAN;if(e===1)return this;if(e===2)return this.sqrt();if(e===3)return this.cbrt();if(e<0)return this.nthRoot(-e).inv();if(this.isZero())return h.ZERO;if(!this.isFinite())return this.significand>0n?h.POSITIVE_INFINITY:e%2===0?h.NAN:h.NEGATIVE_INFINITY;if(this.significand<0n)return e%2===0?h.NAN:this.neg().nthRoot(e).neg();let n=h.precision,t=h.precision;h.precision=n+8;try{return h.exp(this.ln().div(new h(e))).toPrecision(n)}finally{h.precision=t}};h.asinh=function(e){return e.asinh()};h.acosh=function(e){return e.acosh()};h.atanh=function(e){return e.atanh()};h.expm1=function(e){return e.expm1()};h.log1p=function(e){return e.log1p()};h.nthRoot=function(e,n){return e.nthRoot(n)};function aa(e){let n=He(e);if(n<=1023){let u=Math.cbrt(Number(e));if(Number.isFinite(u)&&u>=1)return BigInt(Math.floor(u))}let t=n-51,i=Number(e>>BigInt(t)),r=Math.cbrt(i),s=Math.floor(t/3),o=t%3;o===1&&(r*=1.2599210498948732),o===2&&(r*=1.5874010519681994);let a=BigInt(Math.round(r))<<BigInt(s);return a>0n?a:1n}var gh=1n<<32n;var bh=[BigInt(4),BigInt(2),BigInt(4),BigInt(2),BigInt(4),BigInt(6),BigInt(2),BigInt(6)];var rf=53,la=Math.floor(Math.log10(Math.pow(2,rf))),sf=1e-10,Re=1e6;var Fn=1e4;function xn(e,n){if(e===0)return n;if(n===0||e===n)return e;if(!Number.isInteger(e)||!Number.isInteger(n))return NaN;for(;n!==0;)[e,n]=[n,e%n];return e<0?-e:e}function ot(e,n){if(e===0||n===0)return 0;let t=BigInt(e)*BigInt(n)/BigInt(xn(e,n));return t<0n&&(t=-t),Number(t)}function at(e){if(!Number.isInteger(e)||e<0)return NaN;if(e>=170)return 1/0;let n=1;for(let t=2;t<=e;t++)n=n*t;return n}function ut(e){if(!Number.isInteger(e)||e<0)return NaN;if(e<0)return NaN;if(e<=1)return 1;let n=e;for(;e>2;)e-=2,n*=e;return n}function lt(e,n=sf){return typeof e=="number"&&Math.abs(e)<=n?0:e}function of(e,n,t){let s=!Number.isFinite(n),o=d=>s?1/d:n+d,a=(d,b,y)=>{let E=.01*Math.max(1,Math.abs(y));for(let N=1;N<=5;N++){let k=e(o(d*Math.pow(b/d,N/6)));if(!Number.isFinite(k)||Math.abs(k-y)>E)return!1}return!0},u=s?1/t:t,l=0,c=!1,f=NaN,p=NaN;for(let d=1;d<=60;d++){let b=e(o(u));if(!Number.isFinite(b))return d-1;let y=Math.abs(b);if(d===1){l=y,f=y,p=u,u*=.125;continue}if(Math.abs(y-f)<=1e-10*Math.max(1,y))return a(p,u,b)?1/0:0;if(c&&l>1e-6&&y<1e-8*l)return d-1;y>l&&(c=!0,l=y),f=y,p=u,u*=.125}return 1/0}function Yt(e,n,t=1,i){if(t===0){let u=Yt(e,n,-1,i),l=Yt(e,n,1,i);return u===void 0||l===void 0?NaN:Math.abs(u-l)>1e-5?NaN:(u+l)/2}let r=t>0?1:-1,s=of(e,n,r);if(s===0)return NaN;let[o,a]=er(e,n,{step:r,deadline:i,...Number.isFinite(s)?{maxeval:s}:{}});return Number.isFinite(o)&&a>1e-6*Math.max(1,Math.abs(o))?NaN:o}var Wt=["number","finite_number","complex","finite_complex","imaginary","real","finite_real","rational","finite_rational","integer","finite_integer","non_finite_number"],ur=["indexed_collection","list","tuple"],Xt=[...ur,"collection","set","record","dictionary"],Qt=["scalar",...Wt,"boolean","string"],lr=["value","color",...Xt,...Qt],cr=["expression","symbol","function",...lr],fr=["any","unknown","nothing","never","error",...cr],Kt=new Set(Wt),ca=new Set(Xt),fa=new Set(Qt),vn=new Set(fr);function pa(e){return typeof e!="string"?!1:vn.has(e)}function ei(e){return typeof e=="string"?vn.has(e):typeof e!="object"||!("kind"in e)?!1:e.kind==="signature"||e.kind==="union"||e.kind==="intersection"||e.kind==="negation"||e.kind==="value"||e.kind==="tuple"||e.kind==="list"||e.kind==="record"||e.kind==="dictionary"||e.kind==="set"||e.kind==="symbol"||e.kind==="expression"||e.kind==="numeric"||e.kind==="collection"||e.kind==="indexed_collection"||e.kind==="reference"}var ni=class{input;pos=0;line=1;column=1;tokens=[];constructor(n){this.input=n}saveState(){return{pos:this.pos,line:this.line,column:this.column,tokens:[...this.tokens]}}restoreState(n){this.pos=n.pos,this.line=n.line,this.column=n.column,this.tokens=n.tokens}error(n){throw new Error(`Lexer error at line ${this.line}, column ${this.column}: ${n}`)}peek(n=0){let t=this.pos+n;return t<this.input.length?this.input[t]:""}advance(){let n=this.input[this.pos++];return n===`
|
|
3
3
|
`?(this.line++,this.column=1):this.column++,n}match(n){if(this.input.slice(this.pos,this.pos+n.length)===n){for(let t=0;t<n.length;t++)this.advance();return!0}return!1}isEOF(){return this.pos>=this.input.length}skipWhitespace(){for(;!this.isEOF()&&/\s/.test(this.peek());)this.advance()}readIdentifier(){let n="";for(;!this.isEOF()&&/[a-zA-Z0-9_]/.test(this.peek());)n+=this.advance();return n}readVerbatimString(){if(!this.match("`"))return"";let n="";for(;!this.isEOF()&&this.peek()!=="`";)this.match("\\`")?n+="`":this.match("\\\\")?n+="\\":n+=this.advance();return this.isEOF()&&this.error("Unterminated verbatim string"),this.advance(),n}readStringLiteral(){let n=this.advance(),t="";for(;!this.isEOF()&&this.peek()!==n;)this.match("\\"+n)?t+=n:this.match("\\\\")?t+="\\":t+=this.advance();return this.isEOF()&&this.error("Unterminated string literal"),this.advance(),t}readNumber(){let n="";if((this.peek()==="-"||this.peek()==="+")&&(n+=this.advance()),this.match("0x")||this.match("0X")){for(n+="x";!this.isEOF()&&/[0-9a-fA-F]/.test(this.peek());)n+=this.advance();return"0"+n}if(this.match("0b")||this.match("0B")){for(n+="b";!this.isEOF()&&/[01]/.test(this.peek());)n+=this.advance();return"0"+n}for(;!this.isEOF()&&/[0-9]/.test(this.peek());)n+=this.advance();if(this.peek()==="."&&/[0-9]/.test(this.peek(1)))for(n+=this.advance();!this.isEOF()&&/[0-9]/.test(this.peek());)n+=this.advance();if(this.peek()==="e"||this.peek()==="E")for(n+=this.advance(),(this.peek()==="+"||this.peek()==="-")&&(n+=this.advance());!this.isEOF()&&/[0-9]/.test(this.peek());)n+=this.advance();return n}createToken(n,t){return{type:n,value:t,position:this.pos-t.length,line:this.line,column:this.column-t.length}}nextToken(){if(this.skipWhitespace(),this.isEOF())return this.createToken("EOF","");let n=this.pos,t=this.peek();if(this.match("->"))return this.createToken("->","->");if(this.match(".."))return this.createToken("..","..");if(this.match("+\u221E")||this.match("+oo"))return this.createToken("PLUS_INFINITY",this.input.slice(n,this.pos));if(this.match("-\u221E")||this.match("-oo"))return this.createToken("MINUS_INFINITY",this.input.slice(n,this.pos));if(this.match("+infinity"))return this.createToken("PLUS_INFINITY","+infinity");if(this.match("-infinity"))return this.createToken("MINUS_INFINITY","-infinity");if(/[a-zA-Z_]/.test(t)){let i=this.readIdentifier();switch(i){case"true":return this.createToken("TRUE",i);case"false":return this.createToken("FALSE",i);case"nan":return this.createToken("NAN",i);case"infinity":return this.createToken("INFINITY",i);case"oo":return this.createToken("INFINITY",i);default:return this.createToken("IDENTIFIER",i)}}switch(t){case"|":return this.advance(),this.createToken("|","|");case"&":return this.advance(),this.createToken("&","&");case"!":return this.advance(),this.createToken("!","!");case"^":return this.advance(),this.createToken("^","^");case"(":return this.advance(),this.createToken("(","(");case")":return this.advance(),this.createToken(")",")");case"<":return this.advance(),this.createToken("<","<");case">":return this.advance(),this.createToken(">",">");case"[":return this.advance(),this.createToken("[","[");case"]":return this.advance(),this.createToken("]","]");case",":return this.advance(),this.createToken(",",",");case":":return this.advance(),this.createToken(":",":");case"?":return this.advance(),this.createToken("?","?");case"*":return this.advance(),this.createToken("*","*");case"+":return/[0-9]/.test(this.peek(1))?this.createToken("NUMBER_LITERAL",this.readNumber()):(this.advance(),this.createToken("+","+"));case"x":return/[0-9]/.test(this.peek(1))?(this.advance(),this.createToken("x","x")):(this.advance(),this.createToken("x","x"))}if(t==='"'||t==="'")return this.createToken("STRING_LITERAL",this.readStringLiteral());if(t==="`")return this.createToken("VERBATIM_STRING",this.readVerbatimString());if(/[0-9]/.test(t)||t==="-"&&/[0-9]/.test(this.peek(1))){let i=this.readNumber();return this.peek()==="x"&&/[0-9]/.test(this.peek(1)),this.createToken("NUMBER_LITERAL",i)}if(t==="\u221E")return this.advance(),this.createToken("INFINITY","\u221E");this.error(`Unexpected character: ${t}`)}tokenize(){let n=[];for(;!this.isEOF();){let t=this.nextToken();if(t&&(n.push(t),t.type==="EOF"))break}return n}peekToken(){if(this.tokens.length===0){let n=this.nextToken();n&&this.tokens.push(n)}return this.tokens[0]||this.createToken("EOF","")}consumeToken(){if(this.tokens.length===0){let n=this.nextToken();if(n)return n}return this.tokens.shift()||this.createToken("EOF","")}matchToken(n){return this.peekToken().type===n?(this.consumeToken(),!0):!1}expectToken(n){let t=this.consumeToken();return t.type!==n&&this.error(`Expected ${n}, got ${t.type}`),t}};var ti=class{lexer;typeResolver;current;constructor(n,t){this.lexer=new ni(n),this.typeResolver=t?.typeResolver??{forward:()=>{},resolve:()=>{},get names(){return[]}},this.current=this.lexer.consumeToken()}error(n,t){this.errorAtToken(this.current,n,t)}errorAtToken(n,t,i){let r=this.lexer.input,o=r.split(`
|
|
4
4
|
`)[n.line-1]||r,a=n.column,u=" ".repeat(Math.max(0,a-1))+"^",l=["","Invalid type",`| ${o}`,`| ${u}`,"|",`| ${t}`];throw i&&l.push(`| ${i}`),l.push(""),new Error(l.join(`
|
|
5
|
-
`))}advance(){let n=this.current;return this.current=this.lexer.consumeToken(),n}match(n){return this.current.type===n?(this.advance(),!0):!1}expect(n){return this.current.type!==n&&this.error(`Expected ${n}, got ${this.current.type}`),this.advance()}createNode(n,t={}){return{kind:n,position:this.current.position,line:this.current.line,column:this.current.column,...t}}parseType(){this.checkForNakedFunctionSignature();let n=this.parseUnionType();if(n||this.error("Expected a type"),this.current.type!=="EOF")if(this.current.type==="->"||this.current.type==="+"||this.current.type==="*"||this.current.type==="?")this.error("Function signatures must be enclosed in parentheses","For example `(x: number) -> number`");else if(this.current.type==="("){let t=this.lexer.input;t.includes("set(")||t.includes("collection(")||t.includes("list(")||t.includes("tuple(")?t.includes("set(")?this.error("Use `set<integer>` instead of `set(integer)`."):t.includes("collection(")?this.error("Use `collection<type>` instead of `collection(type)`.","For example `collection<number>`"):t.includes("list(")?this.error("Use `list<type>` instead of `list(type)`.","For example `list<number>`"):t.includes("tuple(")&&this.error("Use `tuple<type1, type2>` instead of `tuple(type1, type2)`.","For example `tuple<string, number>`"):this.error("Unexpected token after type")}else this.error("Unexpected token after type");return n}checkForNakedFunctionSignature(){if(this.current.type==="IDENTIFIER"){let n=this.lexer.saveState(),t=this.current;try{let i=this.current;if(this.advance(),this.current.type===":"){this.advance();let r=!1,s=0,o=10;for(;this.current.type!=="EOF"&&s<o;){if(this.current.type==="->"){r=!0;break}if(this.current.type==="+"||this.current.type==="*"||this.current.type==="?"){if(this.advance(),this.current.type==="->"){r=!0;break}s++}this.advance(),s++}r&&(this.lexer.restoreState(n),this.current=t,this.errorAtToken(i,"Function signatures must be enclosed in parentheses","For example `(z: string*) -> boolean`"))}this.lexer.restoreState(n),this.current=t}catch(i){if(this.lexer.restoreState(n),this.current=t,i instanceof Error&&i.message.includes("Function signatures must be enclosed"))throw i}}}parseUnionType(){let n=this.parseIntersectionType();if(!n)return;let t=[n];for(;this.match("|");){let i=this.parseIntersectionType();i||this.error("Expected type after |"),t.push(i)}return t.length===1?t[0]:this.createNode("union",{types:t})}parseIntersectionType(){let n=this.parsePrimaryType();if(!n)return;let t=[n];for(;this.match("&");){let i=this.parsePrimaryType();i||this.error("Expected type after &"),t.push(i)}return t.length===1?t[0]:this.createNode("intersection",{types:t})}parsePrimaryType(){if(this.match("!")){let n=this.parsePrimaryType();return n||this.error("Expected type after !"),this.createNode("negation",{type:n})}if(this.current.type==="("){let n=this.parseFunctionSignature();if(n)return n;if(this.match("(")){let t=this.parseUnionType();if(t||this.error("Expected type after ("),this.current.type===","){let i=[this.createNode("named_element",{name:void 0,type:t})];for(;this.match(",");){let r=this.parseUnionType();r||this.error("Expected type after ,"),i.push(this.createNode("named_element",{name:void 0,type:r}))}return this.expect(")"),this.createNode("tuple",{elements:i})}return this.expect(")"),this.createNode("group",{type:t})}}return this.parseListType()||this.parseTupleType()||this.parseRecordType()||this.parseDictionaryType()||this.parseSetType()||this.parseCollectionType()||this.parseExpressionType()||this.parseSymbolType()||this.parseNumericType()||this.parsePrimitiveType()||this.parseValue()||this.parseTypeReference()}isFunctionSignature(){let n=this.lexer.saveState(),t=this.current;this.advance();let i=1;for(;i>0&&this.current.type!=="EOF";)this.current.type==="("?i++:this.current.type===")"&&i--,this.advance();let r=this.current.type==="->";return this.lexer.restoreState(n),this.current=t,r}parseFunctionSignature(){if(this.current.type!=="("||!this.isFunctionSignature())return;let n=[];if(this.advance(),!this.match(")")){do{let o=this.parseArgument();o||this.error("Expected argument"),n.push(o)}while(this.match(","));this.expect(")")}this.expect("->");let t=this.parseUnionType();t||this.error("Expected return type after ->");let i=n.some(o=>o.modifier==="optional"),r=n.some(o=>o.modifier==="variadic_zero"||o.modifier==="variadic_one"),s=n.filter(o=>o.modifier==="variadic_zero"||o.modifier==="variadic_one").length;return i&&r&&this.error("Variadic arguments cannot be used with optional arguments"),s>1&&this.error("There can be only one variadic argument"),this.createNode("function_signature",{arguments:n,returnType:t})}parseArgument(){let n=this.parseNamedElement();if(!n)return;let t;return this.match("?")?t="optional":this.match("*")?t="variadic_zero":this.match("+")&&(t="variadic_one"),this.createNode("argument",{element:n,modifier:t})}parseNamedElement(){let n;if(this.current.type==="IDENTIFIER"||this.current.type==="VERBATIM_STRING"){let i=this.current;if(this.lexer.peekToken().type===":"){n=i.value,this.advance(),this.advance();let s=this.parseUnionType();return s?this.createNode("named_element",{name:n,type:s}):void 0}}let t=this.parseUnionType();if(t)return this.createNode("named_element",{name:void 0,type:t})}parseListType(){if(this.current.type==="IDENTIFIER"){let n=this.current,i=this.lexer.peekToken().type==="<";switch(n.value){case"list":return i?(this.advance(),this.parseListTypeImpl()):void 0;case"vector":return i?(this.advance(),this.parseVectorType()):(this.advance(),this.createNode("list",{elementType:this.createNode("primitive",{name:"number"}),dimensions:void 0}));case"matrix":return i?(this.advance(),this.parseMatrixType()):(this.advance(),this.createNode("matrix",{elementType:this.createNode("primitive",{name:"number"}),dimensions:[this.createNode("dimension",{size:-1}),this.createNode("dimension",{size:-1})]}));case"tensor":return i?(this.advance(),this.parseTensorType()):(this.advance(),this.createNode("list",{elementType:this.createNode("primitive",{name:"number"}),dimensions:void 0}));default:return}}}parseListTypeImpl(){let n=this.createNode("primitive",{name:"any"}),t;if(this.match("<")){if(t=this.parseDimensions(),!t){let i=this.parseUnionType();i&&(n=i,this.match("^")&&(t=this.parseCaretDimensions()))}this.expect(">")}return this.createNode("list",{elementType:n,dimensions:t})}parseVectorType(){let n=this.createNode("primitive",{name:"number"}),t;if(this.match("<")){if(this.current.type==="NUMBER_LITERAL")t=parseInt(this.advance().value);else{let i=this.parseUnionType();i&&(n=i,this.match("^")&&(this.current.type==="NUMBER_LITERAL"?t=parseInt(this.advance().value):this.error("Expected number after ^")))}this.expect(">")}return this.createNode("vector",{elementType:n,size:t})}parseMatrixType(){let n=this.createNode("primitive",{name:"number"}),t;if(this.match("<")){if(t=this.parseDimensions(),!t){let i=this.parseUnionType();i&&(n=i,this.match("^")&&(t=this.parseCaretDimensions()))}this.expect(">")}else t=[this.createNode("dimension",{size:null}),this.createNode("dimension",{size:null})];return this.createNode("matrix",{elementType:n,dimensions:t})}parseTensorType(){let n=this.createNode("primitive",{name:"number"});if(this.match("<")){let t=this.parseUnionType();t&&(n=t),this.expect(">")}return this.createNode("tensor",{elementType:n})}parseDimensions(){let n=this.parseDimension();if(!n)return;let t=[n];for(;;){let i=this.current;if(i.type==="IDENTIFIER"&&/^(x\d+)+$/.test(i.value)){this.advance();for(let r of i.value.match(/x(\d+)/g))t.push(this.createNode("dimension",{size:parseInt(r.slice(1))}))}else if(i.type==="IDENTIFIER"&&i.value==="x"){let r=this.lexer.peekToken();r.type!=="NUMBER_LITERAL"&&r.type!=="?"&&this.error("Expected a positive integer literal or `?` after x. For example: `2x3` or `2x?`"),this.advance(),t.push(this.parseDimension())}else break}return t}parseDimension(){if(this.match("?"))return this.createNode("dimension",{size:null});if(this.current.type==="NUMBER_LITERAL"){let n=parseInt(this.advance().value);return this.createNode("dimension",{size:n})}}parseCaretDimensions(){let n=this.match("("),t=this.parseDimensions();return n&&this.expect(")"),t}parseTupleType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="tuple"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let t=[];if(this.current.type!==">"){let i=this.parseNamedElement();i||this.error("Expected tuple element"),t.push(i);let r=i.name!==void 0;for(;this.match(",");){let s=this.parseNamedElement();s||this.error("Expected tuple element"),r&&!s.name&&this.error("All tuple elements should be named, or none. Previous elements were named, but this one isn't."),!r&&s.name&&this.error("All tuple elements should be named, or none. Previous elements were not named, but this one is."),t.push(s)}}return this.expect(">"),this.createNode("tuple",{elements:t})}}parseRecordType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="record"){this.advance();let n=[];if(this.match("<")){if(this.current.type!==">")do{let t=this.parseRecordEntry();t||this.error("Expected record entry"),n.push(t)}while(this.match(","));this.expect(">")}return this.createNode("record",{entries:n})}}parseRecordEntry(){let n;if(this.current.type==="IDENTIFIER")n=this.advance().value;else if(this.current.type==="VERBATIM_STRING")n=this.advance().value;else return;this.expect(":");let t=this.parseUnionType();return t||this.error("Expected value type"),this.createNode("record_entry",{key:n,valueType:t})}parseDictionaryType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="dictionary"){this.advance();let n=this.createNode("primitive",{name:"any"});if(this.match("<")){let t=this.parseUnionType();t&&(n=t),this.expect(">")}return this.createNode("dictionary",{valueType:n})}}parseSetType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="set"){this.advance();let n=this.createNode("primitive",{name:"any"});if(this.match("<")){let t=this.parseUnionType();t&&(n=t),this.expect(">")}return this.createNode("set",{elementType:n})}}parseCollectionType(){if(this.current.type==="IDENTIFIER"){let n=this.current.value==="indexed_collection",t=this.current.value==="collection";if(n||t){this.advance();let i=this.createNode("primitive",{name:"any"});if(this.match("<")){let r=this.parseUnionType();r&&(i=r),this.expect(">")}return this.createNode("collection",{elementType:i,indexed:n})}}}parseExpressionType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="expression"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let i=this.expect("IDENTIFIER").value;return this.expect(">"),this.createNode("expression",{operator:i})}}parseSymbolType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="symbol"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let i=this.expect("IDENTIFIER").value;return this.expect(">"),this.createNode("symbol",{name:i})}}parseNumericType(){if(this.current.type==="IDENTIFIER"&&["real","finite_real","rational","finite_rational","integer","finite_integer"].includes(this.current.value)){let t=this.advance().value;if(this.match("<")){let i=this.parseValue();this.expect("..");let r=this.parseValue();this.expect(">");let s=i?.value??-1/0,o=r?.value??1/0;return(Number.isNaN(s)||Number.isNaN(o))&&this.error("Invalid numeric type","Lower and upper bounds must be valid numbers"),s>o&&this.error(`Invalid range: ${s}..${o}`,"The lower bound must be less than the upper bound"),this.createNode("numeric",{baseType:t,lowerBound:i,upperBound:r})}return this.createNode("numeric",{baseType:t})}}parsePrimitiveType(){if(this.current.type==="IDENTIFIER"){let n=this.current.value;if(vn.has(n))return this.advance(),this.createNode("primitive",{name:n})}}parseValue(){let n,t;switch(this.current.type){case"STRING_LITERAL":n=this.advance().value,t="string";break;case"NUMBER_LITERAL":n=parseFloat(this.advance().value),t="number";break;case"TRUE":this.advance(),n=!0,t="boolean";break;case"FALSE":this.advance(),n=!1,t="boolean";break;case"NAN":this.advance(),n=NaN,t="nan";break;case"INFINITY":case"PLUS_INFINITY":this.advance(),n=1/0,t="infinity";break;case"MINUS_INFINITY":this.advance(),n=-1/0,t="infinity";break;default:return}return this.createNode("value",{value:n,valueType:t})}parseTypeReference(){let n=this.current.type==="IDENTIFIER"&&this.current.value==="type";if(n&&this.advance(),this.current.type==="IDENTIFIER"){let t=this.current,i=this.advance().value;return this.typeResolver.resolve(i)?this.createNode("type_reference",{name:i,isForward:n}):n&&this.typeResolver.forward(i)?this.createNode("type_reference",{name:i,isForward:!0}):(n||this.errorAtToken(t,`Unknown type "${i}"`,"Syntax error. The type was not recognized."),this.createNode("type_reference",{name:i,isForward:n}))}}};function ma(e,n){switch(e.kind){case"function_signature":return n.visitFunctionSignature(e);case"union":return n.visitUnionType(e);case"intersection":return n.visitIntersectionType(e);case"negation":return n.visitNegationType(e);case"group":return n.visitGroupType(e);case"list":return n.visitListType(e);case"vector":return n.visitVectorType(e);case"matrix":return n.visitMatrixType(e);case"tensor":return n.visitTensorType(e);case"tuple":return n.visitTupleType(e);case"record":return n.visitRecordType(e);case"dictionary":return n.visitDictionaryType(e);case"set":return n.visitSetType(e);case"collection":return n.visitCollectionType(e);case"expression":return n.visitExpressionType(e);case"symbol":return n.visitSymbolType(e);case"numeric":return n.visitNumericType(e);case"primitive":return n.visitPrimitiveType(e);case"type_reference":return n.visitTypeReference(e);case"value":return n.visitValue(e);default:throw new Error(`Unknown node kind: ${e.kind}`)}}var pr=class{typeResolver;constructor(n){this.typeResolver=n??{forward:()=>{},resolve:()=>{},get names(){return[]}}}buildType(n){return ma(n,this)}visitFunctionSignature(n){let t=[],i=[],r,s;for(let u of n.arguments){let l=this.buildNamedElement(u.element);switch(u.modifier){case"optional":i.push(l);break;case"variadic_zero":r=l,s=0;break;case"variadic_one":r=l,s=1;break;default:t.push(l);break}}let o=this.buildType(n.returnType),a={kind:"signature",args:t.length>0?t:void 0,result:o};return i.length>0&&(a.optArgs=i),r&&(a.variadicArg=r,a.variadicMin=s),a}visitUnionType(n){return{kind:"union",types:n.types.map(i=>this.buildType(i))}}visitIntersectionType(n){return{kind:"intersection",types:n.types.map(i=>this.buildType(i))}}visitNegationType(n){return{kind:"negation",type:this.buildType(n.type)}}visitGroupType(n){return this.buildType(n.type)}visitListType(n){let t=this.buildType(n.elementType),i=n.dimensions?.map(r=>this.buildDimension(r));return{kind:"list",elements:t,dimensions:i}}visitVectorType(n){let t=this.buildType(n.elementType);return n.size!==void 0?{kind:"list",elements:t,dimensions:[n.size]}:{kind:"list",elements:t}}visitMatrixType(n){let t=this.buildType(n.elementType);if(n.dimensions){let i=n.dimensions.map(r=>this.buildDimension(r));return{kind:"list",elements:t,dimensions:i}}return{kind:"list",elements:t,dimensions:[-1,-1]}}visitTensorType(n){return{kind:"list",elements:this.buildType(n.elementType)}}visitTupleType(n){return{kind:"tuple",elements:n.elements.map(i=>this.buildNamedElement(i))}}visitRecordType(n){if(n.entries.length===0)return"record";let t={};for(let i of n.entries)t[i.key]=this.buildType(i.valueType);return{kind:"record",elements:t}}visitDictionaryType(n){let t=this.buildType(n.valueType);return this.isAnyType(t)?"dictionary":{kind:"dictionary",values:t}}visitSetType(n){let t=this.buildType(n.elementType);return this.isAnyType(t)?"set":{kind:"set",elements:t}}visitCollectionType(n){let t=this.buildType(n.elementType);return n.indexed?this.isAnyType(t)?"indexed_collection":{kind:"indexed_collection",elements:t}:this.isAnyType(t)?"collection":{kind:"collection",elements:t}}visitExpressionType(n){return{kind:"expression",operator:n.operator}}visitSymbolType(n){return{kind:"symbol",name:n.name}}visitNumericType(n){if(!n.lowerBound&&!n.upperBound)return n.baseType;let t=n.lowerBound?this.buildValue(n.lowerBound):-1/0,i=n.upperBound?this.buildValue(n.upperBound):1/0;return t===-1/0&&i===1/0?n.baseType:{kind:"numeric",type:n.baseType,lower:t,upper:i}}visitPrimitiveType(n){return n.name}visitTypeReference(n){let t=this.typeResolver.resolve(n.name);if(t)return t;if(n.isForward){let i=this.typeResolver.forward(n.name);if(i)return i}return n.name}visitValue(n){return{kind:"value",value:n.value}}buildNamedElement(n){let t=this.buildType(n.type);return n.name?{name:n.name,type:t}:{type:t}}buildDimension(n){return n.size??-1}buildValue(n){return n.value}isAnyType(n){return n==="any"||typeof n=="object"&&"kind"in n&&n.kind==="primitive"&&"name"in n&&n.name==="any"}};function da(e,n){return new pr(n).buildType(e)}var ii=new Map,af=2048;function ha(e){if(e===null||typeof e!="object"||Object.isFrozen(e))return e;Object.freeze(e);for(let n of Object.values(e))ha(n);return e}function K(e,n){if(e===void 0)return;if(ei(e))return e;if(typeof e!="string")return;let t=n===void 0;if(t){let i=ii.get(e);if(i!==void 0)return i}try{let r=new ti(e,{typeResolver:n}).parseType(),s=da(r,n);return t&&(ii.size>=af&&ii.clear(),ii.set(e,ha(s))),s}catch(i){throw new Error(`Failed to parse type "${e}": ${i instanceof Error?i.message:String(i)}`)}}var ga={number:Wt,non_finite_number:[],finite_number:["finite_complex","finite_real","finite_integer","finite_rational"],complex:["finite_complex","imaginary","finite_real","finite_rational","finite_integer","non_finite_number"],finite_complex:["imaginary","finite_real","finite_rational","finite_integer"],imaginary:[],real:["rational","integer","finite_real","finite_rational","finite_integer","non_finite_number"],finite_real:["finite_rational","finite_integer"],rational:["finite_rational","finite_integer","integer","non_finite_number"],finite_rational:["finite_integer"],integer:["finite_integer","non_finite_number"],finite_integer:[],any:fr,unknown:[],nothing:[],never:[],error:[],value:lr,scalar:Qt,collection:Xt,indexed_collection:ur,list:[],set:[],tuple:[],record:[],dictionary:[],function:[],symbol:[],boolean:[],string:[],color:[],expression:cr},ft=(()=>{let e={},n=t=>{if(e[t])return e[t];let i=new Set([t]);e[t]=i;for(let r of ga[t])if(r!==t)for(let s of n(r))i.add(s);return i};for(let t of Object.keys(ga))n(t);return e})();function ct(e,n){return n==="any"||e==="never"?!0:e==="unknown"||n==="unknown"?!1:e===n?!0:ft[n].has(e)}function va(e,n){if(e===n)return[e];let t=ft[e],i=ft[n];if(t.has(n))return[n];if(i.has(e))return[e];let r=e<n?`${e}|${n}`:`${n}|${e}`,s=ba.get(r);if(s)return s;let o=[];for(let u of t)i.has(u)&&o.push(u);let a=o.filter(u=>!o.some(l=>l!==u&&ft[l].has(u)));return ba.set(r,a),a}var ba=new Map;function A(e,n){if(typeof e=="string"&&!vn.has(e)&&(e=K(e)),typeof n=="string"&&!vn.has(n)&&(n=K(n)),n==="any"||e==="never")return!0;if(n==="never")return!1;if(n==="error")return e==="error";if(n==="nothing")return e==="nothing";if(e==="nothing")return!1;if(n==="unknown")return!0;if(e==="unknown")return!1;if(typeof n=="string")return typeof e=="string"?ct(e,n):e.kind==="value"?typeof e.value=="boolean"?n==="boolean":typeof e.value=="number"?Number.isInteger(e.value)?ct("integer",n):ct("real",n):typeof e.value=="boolean"?ct("boolean",n):typeof e.value=="string"?ct("string",n):!1:e.kind==="union"?e.types.every(t=>A(t,n)):e.kind==="intersection"?e.types.some(t=>A(t,n)):e.kind==="negation"?!A(e.type,n):e.kind==="numeric"?!!A(e.type,n):n==="number"?Ea(e):n==="symbol"?mr(e):n==="expression"?uf(e):n==="function"?Sa(e):n==="scalar"?Na(e):n==="value"?Ia(e):n==="indexed_collection"?_a(e):n==="collection"?Ta(e):n==="tuple"?e.kind==="tuple":n==="list"?e.kind==="list":n==="set"?e.kind==="set":n==="record"?e.kind==="record":n==="dictionary"?e.kind==="dictionary":!1;if(n.kind==="union")return typeof e!="string"&&e.kind==="union"?e.types.every(t=>n.types.some(i=>A(t,i))):n.types.some(t=>A(e,t));if(n.kind==="expression"){if(e==="symbol")return!0;if(typeof e=="string")return!1;if(e.kind==="expression")return n.operator==="Symbol"?mr(e):e.operator===n.operator;if(e.kind==="symbol")return!0}if(typeof e=="string")return!1;if(n.kind==="reference"){if(e.kind==="reference")return e.name===n.name;if(n.alias===!0&&n.def)return A(e,n.def)}if(e.kind==="union")return e.types.some(t=>A(t,n));if(e.kind==="intersection"&&n.kind==="intersection")return n.types.every(t=>e.types.some(i=>A(i,t)));if(e.kind==="intersection")return e.types.every(t=>A(t,n));if(n.kind==="intersection")return n.types.every(t=>A(e,t));if(e.kind==="signature"&&n.kind==="signature"){if(!A(e.result,n.result))return!1;if(e.optArgs||e.variadicArg){if(n.args){if(!e.args||e.args.length!==n.args.length)return!1;for(let t=0;t<n.args.length;t++)if(!A(n.args[t].type,e.args[t].type))return!1}else if(e.args)return!1;if(n.optArgs){if(!e.optArgs||e.optArgs.length!==n.optArgs.length)return!1;for(let t=0;t<e.optArgs.length;t++)if(!A(n.optArgs[t].type,e.optArgs[t].type))return!1}else if(e.optArgs)return!1;if(n.variadicArg){if(!e.variadicArg||e.variadicMin!=n.variadicMin||!A(n.variadicArg.type,e.variadicArg.type))return!1}else if(e.variadicArg)return!1}else{if(n.args&&!e.args)return!1;let t=0;if(n.args){if(e.args.length<n.args.length)return!1;for(;t<n.args.length;){if(!A(n.args[t].type,e.args[t].type))return!1;t+=1}}if(n.optArgs){if(t>=e.args.length)return!0;for(let i=0;i<n.optArgs.length;i++){if(!A(n.optArgs[i].type,e.args[t].type))return!1;if(t+=1,t>=e.args.length)return!0}}if(n.variadicArg){if(t>=e.args.length&&n.variadicMin===0)return!0;if(n.variadicMin>0&&t+n.variadicMin>e.args.length)return!1;for(;t<e.args.length;){if(!A(n.variadicArg.type,e.args[t].type))return!1;t+=1}}}return!0}if(e.kind==="record"&&n.kind==="record"){for(let t of Object.keys(n.elements))if(!(t in e.elements)||!A(e.elements[t],n.elements[t]))return!1;return!0}if(e.kind==="dictionary"&&n.kind==="dictionary")return A(e.values,n.values);if(n.kind==="indexed_collection")return e.kind==="indexed_collection"||e.kind==="list"?A(e.elements,n.elements):e.kind==="tuple"?e.elements.every(t=>A(t.type,n.elements)):!1;if(n.kind==="collection"){if(e.kind==="collection"||e.kind==="indexed_collection"||e.kind==="list")return A(e.elements,n.elements);if(e.kind==="tuple")return e.elements.every(t=>A(t.type,n.elements));if(e.kind==="set")return A(e.elements,n.elements);if(e.kind==="dictionary")return A({kind:"tuple",elements:[{type:"string"},{type:e.values}]},n.elements);if(e.kind==="record")return A({kind:"tuple",elements:[{type:"string"},{type:Ee(...Object.values(e.elements))}]},n.elements)}if(e.kind==="tuple"&&n.kind==="tuple"){if(e.elements.length!==n.elements.length)return!1;for(let t=0;t<e.elements.length;t++){let i=e.elements[t],r=n.elements[t];if(!A(i.type,r.type)||i.name!==r.name)return!1}return!0}if(n.kind==="list"&&e.kind==="list"){if(!A(e.elements,n.elements))return!1;if(n.dimensions){if(!e.dimensions||e.dimensions.length!==n.dimensions.length)return!1;for(let t=0;t<e.dimensions.length;t++)if(n.dimensions[t]!==-1&&e.dimensions[t]!==n.dimensions[t])return!1}return!0}if(e.kind==="symbol"&&n.kind==="symbol")return e.name===n.name;if(e.kind==="numeric"&&n.kind==="numeric")return!(!A(e.type,n.type)||(e.lower??-1/0)<(n.lower??-1/0)||(e.upper??1/0)>(n.upper??1/0));if(n.kind==="set"&&e.kind==="set")return!!A(e.elements,n.elements);if(e.kind==="negation"&&n.kind==="negation")return A(e.type,n.type);if(n.kind==="negation")return!A(e,n.type);if(n.kind==="value"&&e.kind==="value")return n.value===e.value;if(e.kind==="value"){if(typeof e.value=="boolean")return A("boolean",n);if(typeof e.value=="number")return Number.isInteger(e.value)?A("integer",n):A("real",n);if(typeof e.value=="string")return A("string",n)}return!1}function Ea(e){return typeof e=="string"?Kt.has(e):e.kind==="value"?typeof e.value=="number":e.kind==="numeric"}function Na(e){return Ea(e)?!0:typeof e=="string"?fa.has(e):e.kind==="value"?["string","boolean","number"].includes(typeof e.value):!1}function Ta(e){return _a(e)?!0:typeof e=="string"?ca.has(e):["collection","set","record","dictionary"].includes(e.kind)}function _a(e){return typeof e=="string"?!1:["indexed_collection","list","tuple"].includes(e.kind)}function Ia(e){return Na(e)||Ta(e)}function Sa(e){return e==="function"||typeof e!="string"&&e.kind==="signature"}function uf(e){return typeof e=="string"&&["expression","symbol","function"].includes(e)||Ia(e)||Sa(e)||mr(e)?!0:typeof e=="string"?!1:e.kind==="expression"}function mr(e){return e==="symbol"?!0:typeof e=="string"?!1:e.kind==="symbol"?!0:e.kind==="expression"?e.operator==="Symbol":!1}function lf(e,n){return e===n?e:e==="nothing"||n==="nothing"?"nothing":e==="any"?n:n==="any"?e:e==="never"?n:n==="never"?e:e==="unknown"?n:n==="unknown"||A(e,n)?e:A(n,e)?n:"never"}function cf(e,n){if(e===n)return e;if(e==="any"||n==="any")return"any";if(e==="never")return n;if(n==="never")return e;if(e==="unknown")return n;if(n==="unknown")return e;if(e==="nothing")return n;if(n==="nothing")return e;if(A(e,n))return n;if(A(n,e))return e;let t=mf(e,n);return ff.has(t)?pf(e,n):t}var ff=new Set(["scalar","value","function","expression","collection","indexed_collection","list","set","tuple","record","dictionary","map","any"]);function pf(e,n){let t=[],i=new Set,r=s=>{if(typeof s=="object"&&s.kind==="union"){for(let a of s.types)r(a);return}let o=typeof s=="string"?s:JSON.stringify(s);i.has(o)||(i.add(o),t.push(s))};return r(e),r(n),t.length===1?t[0]:{kind:"union",types:t}}function dr(...e){return e.length===0?"nothing":e.length===1?e[0]:e.reduce((n,t)=>lf(n,t))}function Ee(...e){return e.length===0?"nothing":e.length===1?e[0]:e.reduce((n,t)=>cf(n,t))}var ya=["non_finite_number","finite_integer","integer","finite_rational","rational","finite_real","real","imaginary","finite_complex","complex","finite_number","number","list","record","dictionary","set","tuple","indexed_collection","collection","scalar","value","function","expression"],xa=new Map;function mf(e,n){if(e===n)return e;if(e==="any"||n==="any")return"any";if(e==="never")return n;if(n==="never")return e;if(e==="unknown")return n;if(n==="unknown")return e;if(e==="nothing")return n;if(n==="nothing")return e;if(typeof e=="string"&&typeof n=="string"){let t=e<n?`${e}|${n}`:`${n}|${e}`,i=xa.get(t);if(i===void 0){i="any";for(let r of ya){let s=ft[r];if(s.has(e)&&s.has(n)){i=r;break}}xa.set(t,i)}return i}for(let t of ya)if(A(e,t)&&A(n,t))return t;return"any"}var Ma=3,wa=1,Aa=2,df=4,hf=5,gf=6,bf=7,yf=8,xf=9,vf=10,Ef=11;function G(e,n=0){if(typeof e=="string")return e;let t="";switch(e.kind){case"value":typeof e.value=="string"?t=`"${e.value}"`:typeof e.value=="boolean"?t=e.value?"true":"false":t=e.value.toString();break;case"reference":t=e.name;break;case"negation":t=`!${G(e.type,Ma)}`;break;case"union":t=e.types.map(u=>G(u,wa)).join(" | ");break;case"intersection":t=e.types.map(u=>G(u,Aa)).join(" & ");break;case"expression":t=`expression<${ka(e.operator)}>`;break;case"symbol":t=`symbol<${ka(e.name)}>`;break;case"numeric":Number.isFinite(e.lower)&&Number.isFinite(e.upper)?t=`${e.type}<${e.lower}..${e.upper}>`:Number.isFinite(e.lower)?t=`${e.type}<${e.lower}..>`:Number.isFinite(e.upper)?t=`${e.type}<..${e.upper}>`:t=`${e.type}`;break;case"list":if(e.dimensions&&typeof e.elements=="string"&&Kt.has(e.elements)){if(e.dimensions===void 0)e.elements==="number"&&(t="tensor");else if(e.dimensions.length===1)e.elements==="number"?e.dimensions[0]<0?t="vector":t=`vector<${e.dimensions[0]}>`:e.dimensions[0]<0?t=`vector<${G(e.elements)}>`:t=`vector<${G(e.elements)}^${e.dimensions[0]}>`;else if(e.dimensions.length===2){let u=e.dimensions;e.elements==="number"?u[0]<0&&u[1]<0?t="matrix":t=`matrix<${u[0]}x${u[1]}>`:u[0]<0&&u[1]<0?t=`matrix<${G(e.elements)}>`:t=`matrix<${G(e.elements)}^(${u[0]}x${u[1]})>`}}if(!t){let u=e.dimensions?e.dimensions.length===1?`^${e.dimensions[0].toString()}`:`^(${e.dimensions.join("x")})`:"";t=`list<${G(e.elements)}${u}>`}break;case"record":t=`record<${Object.entries(e.elements).map(([u,l])=>`${u}: ${G(l)}`).join(", ")}>`;break;case"dictionary":t=`dictionary<${G(e.values)}>`;break;case"set":t=`set<${G(e.elements)}>`;break;case"collection":t=`collection<${G(e.elements)}>`;break;case"indexed_collection":t=`indexed_collection<${G(e.elements)}>`;break;case"tuple":if(e.elements.length===0)t="tuple";else if(e.elements.length===1){let[u]=e.elements;t=`tuple<${On(u)}>`}else t="tuple<"+e.elements.map(u=>On(u)).join(", ")+">";break;case"signature":let r=e.args?e.args.map(u=>On(u)).join(", "):"",s=e.optArgs?e.optArgs.map(u=>On(u)+"?").join(", "):"",o=e.variadicArg?e.variadicMin===0?`${On(e.variadicArg)}*`:`${On(e.variadicArg)}+`:"";t=`(${[r,s,o].filter(u=>u).join(", ")}) -> ${G(e.result)}`;break;default:t="error"}return n>0&&n>Nf(e.kind)?`(${t})`:t}function On(e){return e.name?`${e.name}: ${G(e.type)}`:G(e.type)}function ka(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)?e:`\`${e}\``}function Nf(e){switch(e){case"negation":return Ma;case"union":return wa;case"intersection":return Aa;case"list":return df;case"record":return hf;case"dictionary":return gf;case"set":return bf;case"collection":case"indexed_collection":return yf;case"tuple":return xf;case"signature":return vf;case"value":return Ef;default:return 0}}function hr(e){if(e){if(e==="function")return"any";if(typeof e!="string"&&e.kind==="signature")return e.result}}function Fe(e){if(e==="collection"||e==="indexed_collection"||e==="list"||e==="set"||e==="tuple"||e==="dictionary"||e==="record")return"any";if(typeof e!="string"){if(e.kind==="collection"||e.kind==="indexed_collection"||e.kind==="list"||e.kind==="set")return e.elements;if(e.kind==="tuple")return Ee(...e.elements.map(n=>n.type));if(e.kind==="dictionary")return K(`tuple<string, ${G(e.values)}>`);if(e.kind==="record")return K(`tuple<string, ${G(Ee(...Object.values(e.elements)))}>`)}}var de=class e{static unknown=new e("unknown");static number=new e("number");static non_finite_number=new e("non_finite_number");static finite_number=new e("finite_number");static finite_integer=new e("finite_integer");static finite_real=new e("finite_real");static string=new e("string");static dictionary=new e("dictionary");static setNumber=new e("set<number>");static setComplex=new e("set<complex>");static setImaginary=new e("set<imaginary>");static setReal=new e("set<real>");static setRational=new e("set<rational>");static setFiniteInteger=new e("set<finite_integer>");static setInteger=new e("set<integer>");type;static widen(...n){return new e(Ee(...n.map(t=>t instanceof e?t.type:t)))}static narrow(...n){return new e(dr(...n.map(t=>t instanceof e?t.type:t)))}constructor(n,t){typeof n=="string"?this.type=K(n,t):this.type=n}matches(n){return n instanceof e?A(this.type,n.type):A(this.type,n)}is(n){return A(this.type,n)&&A(n,this.type)}get isUnknown(){return this.type==="unknown"}toString(){return G(this.type)}toJSON(){return G(this.type)}[Symbol.toPrimitive](n){return n==="string"?this.toString():null}valueOf(){return G(this.type)}};function P(e){return e?._kind==="number"}function _(e,n){return e?._kind==="symbol"&&(n===void 0||e.symbol===n)}function g(e,n){return(e?._kind==="function"||e?._kind==="tensor")&&(n===void 0||e.operator===n)}function ue(e){return e?._kind==="string"}function Ca(e){return e?._kind==="dictionary"}function ie(e){return e?._kind==="symbol"?e.symbol:void 0}var _g=Object.freeze({bySubject:new Map,membership:new Map});var Ag=[0,-1,1,Math.PI,Math.E,-Math.PI,-Math.E,.5,-.5];function Ye(e){if(!e)return;if(e.operator==="Function"&&e.isCanonical||_(e))return e;if(g(e,"BuiltinFunction"))return e.op1;if(g(e,"Delimiter")){let s=e.op1;if(g(s,"Sequence"))if(s.nops===1)e=s;else return Ye(e.engine._fn("Block",s.ops,{canonical:!1}));return Ye(g(e)?e.op1:void 0)}if(g(e,"Function"))return $a(e.engine,e.ops);e.operator;let n=e.engine,t=e.subs({_:"_1"}),i=1,r=[];for(;i<10;)t.has(`_${i}`)&&r.push(t.engine.symbol(`_${i}`,{canonical:!1})),i++;if(r.length===0){t.operator!=="Block"?t=n.function("Block",[t]):t=t.canonical;let s=t.unknowns;s.length>0&&(r=s.map(o=>n.symbol(o,{canonical:!1})))}return $a(n,[t,...r])}function $a(e,n){if(n.length===0)return;let t=n.slice(1).map(r=>_(r)?r:e.error("expected-a-symbol",r.toString()));e._pushShadowedParameters(t.filter(r=>_(r)).map(r=>r.symbol));let i;try{i=n[0].operator==="Block"?n[0].canonical:e.function("Block",[n[0]])}finally{e._popShadowedParameters()}i.isScoped;for(let r of t)_(r)&&!i.localScope.bindings.has(r.symbol)&&e.declare(r.symbol,{inferred:!0,type:"unknown"},i.localScope);return e._fn("Function",[i,...t])}function Ra(e,n){let t=e.Nothing;for(let i of n){let r=i.operator;if(r==="Return"&&g(i)){t=i.op1.evaluate();break}if((r==="Break"||r==="Continue")&&g(i)){t=e.expr([r,i.op1.evaluate()]);break}t=i.evaluate()}return t}function Pa(e,n){let t=[];for(let i of n){if(!i)continue;let r=e.bindings.get(i);r&&(t.push([i,r]),e.bindings.delete(i))}return t}function Da(e,n){for(let[t,i]of n)e.bindings.set(t,i)}function Oa(e,n,t){if(n.operator==="Function"&&g(n)){let i=n.op1;if(i&&g(i)&&i.localScope){let r=new Set(n.ops.slice(1).map(u=>_(u)?u.symbol:"").filter(u=>u)),s=new Map;for(let[u,l]of i.localScope.bindings)r.has(u)&&s.set(u,l);let o={parent:t,bindings:s},a=e._fn("Block",i.ops,{scope:o});return e._fn("Function",[a,...n.ops.slice(1)])}return n}if(g(n)&&n.ops.length>0){let i=!1,r=n.ops.map(s=>{let o=Oa(e,s,t);return o!==s&&(i=!0),o});if(i)return e._fn(n.operator,r)}return n}function Fa(e,n){return t=>{e._enterRecursion();try{return n(t)}finally{e._exitRecursion()}}}function Sf(e){let n=e.engine;if(_(e)){let u=e.symbol;return l=>n.function(u,l).evaluate()}let t=Ye(e);if(!t)throw new Error("Invalid function literal");e=t,e.operator,e.isCanonical;let i=e;if(i.ops.length===1)return i.ops[0],Fa(n,()=>i.ops[0].evaluate());let[r,...s]=i.ops;if(r.isScoped,!r.localScope)throw new Error("Function body must be a scoped Block expression");let o=r;return Fa(n,u=>{if(u.length>s.length)throw new Error(`Too many arguments for function "${e.toString()}": expected ${s.length}, got ${u.length}`);if(n.strict&&!u.every(N=>N.isValid))return;if(u.length<s.length){let N=new Set([...r.symbols,...s.map(X=>_(X)?X.symbol:"")]),k=s.slice(u.length).map((X,ae)=>{let ye=`_${ae+1}`,hn=0;for(;N.has(ye);)ye=`_${ae+1}_${hn++}`;return N.add(ye),n.symbol(ye,{canonical:!1})}),$=Object.fromEntries(s.slice(u.length).map((X,ae)=>[_(X)?X.symbol:"",k[ae]])),L=u.map(X=>X.evaluate()),D={parent:o.localScope.parent??n.context.lexicalScope,bindings:new Map};for(let X=0;X<u.length;X++){let ae=s[X],ye=_(ae)?ae.symbol:"";ye&&n.declare(ye,{value:L[X],inferred:!0},D)}let Z=o.localScope,V=Z.parent;Z.parent=D;let q=s.slice(0,u.length).map(X=>_(X)?X.symbol:""),H=Pa(Z,q);n.pushScope(D);let fe;try{fe=Ra(n,o.ops)}finally{n.popScope(),Z.parent=V,Da(Z,H)}return n.function("Function",[fe.subs($),...k])}let l=u.map(N=>N.evaluate()),f={parent:o.localScope.parent??n.context.lexicalScope,bindings:new Map},p=s.map(N=>_(N)?N.symbol:"");for(let N=0;N<s.length;N++)p[N]&&n.declare(p[N],{value:l[N],inferred:!0},f);let d=o.localScope,b=d.parent;d.parent=f;let y=Pa(d,p);n.pushScope(f);let E;try{E=Ra(n,o.ops),E=Oa(n,E,f)}finally{n.popScope(),d.parent=b,Da(d,y)}return E.isValid?E:void 0})}function se(e){return Sf(e)??(n=>e.engine.function("Apply",[e,...n]).evaluate())}var gr=100;function ri(e){return(e.isFiniteCollection??!1)&&e.isIndexedCollection}function kf(e,n,t){if(!(e.isFiniteCollection!==!0||n.isFiniteCollection!==!0)){for(let i of e.each())if(n.contains(i)!==!0)return!1;if(t){let i=e.count;if(i===void 0)return!1;let r=n.count;if(r===void 0||i===r)return!1}return!0}}function Mf(e,n){if(g(e)){for(let t=0;t!==e.nops;t+=1)if(n(e.ops[t]))return t+1}}function si(){return{isLazy:e=>!1,count:e=>g(e)?e.nops:0,isEmpty:e=>!g(e)||e.nops===0,isFinite:e=>!0,contains:(e,n)=>g(e)?e.ops.some(t=>t.isSame(n)):!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=1,t=e.nops;return{next:()=>n===t+1?{value:void 0,done:!0}:(n+=1,{value:e.ops[n-1-1],done:!1})}},subsetOf:kf,at:(e,n)=>{if(!(typeof n!="number"||!g(e))&&(n<0&&(n=e.nops+n+1),!(n<1||n>e.nops)))return e.ops[n-1]},indexWhere:Mf,eltsgn:e=>{},elttype:e=>!g(e)||e.nops===0?"unknown":e.nops===1?e.ops[0].type.type:Ee(...e.ops.map(n=>n.type.type))}}function I(e){let n="",t="";for(let i of e)i!=null&&(typeof i=="string"&&(/[a-zA-Z]/.test(i[0])&&(t+=n),/\\[a-zA-Z]+\*?$/.test(i)?n=" ":n=""),t+=i.toString());return t}function En(e,n,t){return n.includes(e)&&(n=`{${n}}`),/^[0-9]$/.test(t)?`${n}${e}${t}`:`${n}${e}{${t}}`}var B=245,pt=260,We=270,re=275,Ne=390,Me=600;var mt=700,br=810;var Nn=[{latexTrigger:["\\not","<"],kind:"infix",associativity:"any",precedence:246,parse:"NotLess"},{name:"NotLess",latexTrigger:["\\nless"],kind:"infix",associativity:"any",precedence:246},{latexTrigger:["<"],kind:"infix",associativity:"any",precedence:245,parse:"Less"},{name:"Less",latexTrigger:["\\lt"],kind:"infix",associativity:"any",precedence:245},{latexTrigger:["<","="],kind:"infix",associativity:"any",precedence:241,parse:"LessEqual"},{name:"LessEqual",latexTrigger:["\\le"],kind:"infix",associativity:"any",precedence:241},{latexTrigger:["\\leq"],kind:"infix",associativity:"any",precedence:241,parse:"LessEqual"},{latexTrigger:["\\leqslant"],kind:"infix",associativity:"any",precedence:B+5,parse:"LessEqual"},{name:"LessNotEqual",latexTrigger:["\\lneqq"],kind:"infix",associativity:"any",precedence:B},{name:"NotLessNotEqual",latexTrigger:["\\nleqq"],kind:"infix",associativity:"any",precedence:B},{name:"LessOverEqual",latexTrigger:["\\leqq"],kind:"infix",associativity:"any",precedence:B+5},{name:"GreaterOverEqual",latexTrigger:["\\geqq"],kind:"infix",associativity:"any",precedence:B+5,parse:"GreaterEqual"},{name:"Equal",latexTrigger:["="],kind:"infix",associativity:"right",precedence:B},{latexTrigger:["*","="],kind:"infix",associativity:"right",precedence:B,parse:"StarEqual"},{name:"StarEqual",latexTrigger:["\\star","="],kind:"infix",associativity:"right",precedence:B},{name:"PlusEqual",latexTrigger:["+","="],kind:"infix",associativity:"right",precedence:B},{name:"MinusEqual",latexTrigger:["-","="],kind:"infix",associativity:"right",precedence:B},{name:"SlashEqual",latexTrigger:["/","="],kind:"infix",associativity:"right",precedence:B},{name:"EqualEqual",latexTrigger:["=","="],kind:"infix",associativity:"right",precedence:B},{name:"EqualEqualEqual",latexTrigger:["=","=","="],kind:"infix",associativity:"right",precedence:B+5},{name:"TildeFullEqual",latexTrigger:["\\cong"],kind:"infix",associativity:"right",precedence:B},{name:"NotTildeFullEqual",latexTrigger:["\\ncong"],kind:"infix",associativity:"right",precedence:B},{name:"Approx",latexTrigger:["\\approx"],kind:"infix",associativity:"right",precedence:247},{name:"NotApprox",latexTrigger:["\\not","\\approx"],kind:"infix",associativity:"right",precedence:247},{name:"ApproxEqual",latexTrigger:["\\approxeq"],kind:"infix",associativity:"right",precedence:B},{name:"NotApproxEqual",latexTrigger:["\\not","\\approxeq"],kind:"infix",associativity:"right",precedence:250},{name:"NotEqual",latexTrigger:["\\ne"],kind:"infix",associativity:"right",precedence:255},{latexTrigger:["\\neq"],kind:"infix",associativity:"right",precedence:255,parse:"NotEqual"},{name:"Unequal",latexTrigger:["!","="],kind:"infix",associativity:"right",precedence:B},{name:"GreaterEqual",latexTrigger:["\\ge"],kind:"infix",associativity:"right",precedence:242},{latexTrigger:["\\geq"],kind:"infix",associativity:"right",precedence:242,parse:"GreaterEqual"},{latexTrigger:[">","="],kind:"infix",associativity:"right",precedence:243,parse:"GreaterEqual"},{latexTrigger:["\\geqslant"],kind:"infix",associativity:"right",precedence:B+5,parse:"GreaterEqual"},{name:"GreaterNotEqual",latexTrigger:["\\gneqq"],kind:"infix",associativity:"right",precedence:B},{name:"NotGreaterNotEqual",latexTrigger:["\\ngeqq"],kind:"infix",associativity:"right",precedence:B},{latexTrigger:[">"],kind:"infix",associativity:"right",precedence:245,parse:"Greater"},{name:"Greater",latexTrigger:["\\gt"],kind:"infix",associativity:"right",precedence:245},{name:"NotGreater",latexTrigger:["\\ngtr"],kind:"infix",associativity:"right",precedence:244},{latexTrigger:["\\not",">"],kind:"infix",associativity:"right",precedence:244,parse:"NotGreater"},{name:"RingEqual",latexTrigger:["\\circeq"],kind:"infix",associativity:"right",precedence:B},{name:"TriangleEqual",latexTrigger:["\\triangleq"],kind:"infix",associativity:"right",precedence:B},{name:"DotEqual",latexTrigger:["\\doteq"],kind:"infix",associativity:"right",precedence:B+5},{name:"DotEqualDot",latexTrigger:["\\doteqdot"],kind:"infix",associativity:"right",precedence:B+5},{name:"FallingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:B+5},{name:"RisingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:B+5},{name:"QuestionEqual",latexTrigger:["\\questeq"],kind:"infix",associativity:"right",precedence:B},{name:"MuchLess",latexTrigger:["\\ll"],kind:"infix",associativity:"right",precedence:B},{name:"MuchGreater",latexTrigger:["\\gg"],kind:"infix",associativity:"right",precedence:B},{name:"Precedes",latexTrigger:["\\prec"],kind:"infix",associativity:"right",precedence:B},{name:"Succeeds",latexTrigger:["\\succ"],kind:"infix",associativity:"right",precedence:B},{name:"PrecedesEqual",latexTrigger:["\\preccurlyeq"],kind:"infix",associativity:"right",precedence:B},{name:"SucceedsEqual",latexTrigger:["\\curlyeqprec"],kind:"infix",associativity:"right",precedence:B},{name:"NotPrecedes",latexTrigger:["\\nprec"],kind:"infix",associativity:"right",precedence:B},{name:"NotSucceeds",latexTrigger:["\\nsucc"],kind:"infix",associativity:"right",precedence:B},{name:"Between",latexTrigger:["\\between"],kind:"infix",associativity:"right",precedence:B+5}];function yr(e){return typeof e!="string"?!1:Nn.some(n=>n.name===e)}function xr(e){return typeof e!="string"?!1:["Less","LessEqual","Greater","GreaterEqual"].includes(e)}function vr(e){return typeof e!="string"?!1:["Equal","NotEqual"].includes(e)}var oi=["Error","'missing'"];function Tn(e){return!!(typeof e=="number"||Ln(e)||typeof e=="string"&&ci(e))}function Ln(e){return e!==null&&typeof e=="object"&&"num"in e}function ai(e){return e!==null&&typeof e=="object"&&"sym"in e}function Va(e){return e!==null&&typeof e=="object"&&"str"in e}function qa(e){return e!==null&&typeof e=="object"&&"dict"in e&&typeof e.dict=="object"&&!Array.isArray(e.dict)&&e.dict!==null}function Bn(e){return e!==null&&typeof e=="object"&&"fn"in e&&Array.isArray(e.fn)&&e.fn.length>0&&typeof e.fn[0]=="string"}function j(e){return e==null?null:typeof e=="object"&&"str"in e?e.str:typeof e!="string"?null:e.length>=2&&e.at(0)==="'"&&e.at(-1)==="'"?e.substring(1,e.length-1):ci(e)||_r(e)?null:e}function Nr(e){if(e==null||j(e)!==null)return null;let n=v(e);return n?[n,...S(e).map(t=>Nr(t)).filter(t=>t!==null)]:e}function v(e){return Array.isArray(e)?e[0]:e==null?"":Bn(e)?e.fn[0]:""}function S(e){return Array.isArray(e)?e.slice(1):e!==void 0&&Bn(e)?e.fn.slice(1):[]}function m(e,n){return Array.isArray(e)?e[n]??null:e===null||!Bn(e)?null:e.fn[n]??null}function ne(e){return e==null?0:Array.isArray(e)?Math.max(0,e.length-1):Bn(e)?Math.max(0,e.fn.length-1):0}function Tr(e){return e==null?null:v(e)==="Hold"?m(e,1):e}function w(e){return typeof e=="string"&&_r(e)?e.length>=2&&e.at(0)==="`"&&e.at(-1)==="`"?e.slice(1,-1):e:e==null?null:ai(e)?e.sym:null}function La(e){let n=v(e);if(n==="KeyValuePair"||n==="Tuple"||n==="Pair"){let[t,i]=S(e),r=j(t);return r?[r,i??"Nothing"]:null}return null}function Ja(e){if(e===null)return null;if(qa(e))return e;let n=La(e);if(n)return{dict:{[n[0]]:Ba(n[1])??"Nothing"}};if(v(e)==="Dictionary"){let t={};for(let i of S(e)){let r=La(i);r&&(t[r[0]]=Ba(r[1])??"Nothing")}return{dict:t}}return null}function ui(e){return{dict:Object.fromEntries(Object.entries(e).map(([t,i])=>[t,Er(i)??"Nothing"]))}}function $f(e){if(e=e.toLowerCase().replace(/[nd]$/,"").replace(/[\u0009-\u000d\u0020\u00a0]/g,""),e==="nan")return NaN;if(/^(infinity|\+infinity|oo|\+oo)$/i.test(e))return 1/0;if(/^(-infinity|-oo)$/.test(e))return-1/0;if(/\([0-9]+\)/.test(e)){let[n,t,i,r]=e.match(/(.+)\(([0-9]+)\)(.*)$/)??[];e=t+i.repeat(Math.ceil(16/i.length))+(r??"")}return parseFloat(e)}function F(e){return typeof e=="number"?e:typeof e=="string"&&ci(e)?$f(e):e!==void 0&&Ln(e)?F(e.num):null}function Vn(e){if(e==null)return null;if(w(e)==="Half")return[1,2];let n=v(e);if(!n)return null;let t=null,i=null;if(n==="Negate"){let r=Vn(S(e)[0]);if(r)return[-r[0],r[1]]}if(n==="Rational"||n==="Divide"){let[r,s]=S(e);t=F(r)??NaN,i=F(s)??NaN}if(n==="Power"){let[r,s]=S(e),o=F(s);o===1?(t=F(r),i=1):o===-1&&(t=1,i=F(r))}if(n==="Multiply"){let[r,s]=S(e);if(v(s)==="Power"){let[o,a]=S(s);F(a)===-1&&(t=F(r),i=F(o))}}return t===null||i===null?null:Number.isInteger(t)&&Number.isInteger(i)?[t,i]:null}function li(e,n){let t=null;if(Array.isArray(e)&&(t=e),Bn(e)&&(t=e.fn),t===null)return[];let i=1,r=[];for(;i<t.length;)r.push(n(t[i])),i+=1;return r}function qn(e,n,t){let i=v(n),r=v(t);return i===e&&r===e?[e,...S(n),...S(t)]:i===e?[e,...S(n),t]:r===e?[e,n,...S(t)]:[e,n,t]}function _n(e){if(e==null)return null;let n=v(e);if(n==="Delimiter"){if(e=m(e,1),e===null)return[];if(n=v(e),n!=="Sequence")return[e]}return n!=="Sequence"?null:S(e)}function Y(e){return e==null||e==="Nothing"?!0:v(e)==="Sequence"&&ne(e)===0}function Q(e){return Y(e)?oi:e}function ci(e){return/^(nan|oo|\+oo|-oo|infinity|\+infinity|-infinity)$/i.test(e)||/^[+-]?(0|[1-9][0-9]*)(\.[0-9]+)?(\([0-9]+\))?([eE][+-]?[0-9]+)?$/.test(e)}function _r(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)||e.length>=2&&e[0]==="`"&&e[e.length-1]==="`"}function Er(e){if(typeof e=="string")return{str:e};if(typeof e=="number")return{num:e.toString()};if(typeof e=="boolean")return e?"True":"False";if(Array.isArray(e))return["List",...e.map(n=>Er(n)??"Nothing")];if(e===null)return null;if(typeof e=="object"){let n={};for(let t in e)n[t]=Er(e[t])??"Nothing";return{dict:n}}return Bn(e)||ai(e)||Ln(e)||Va(e)||qa(e)?e:null}function Ba(e){return e==null?null:Va(e)?e.str:Ln(e)?parseFloat(e.num):ai(e)?e.sym:typeof e=="string"||typeof e=="number"?e:Array.isArray(e)?{fn:e}:e}var Ga=[{name:"True",kind:"symbol",latexTrigger:["\\top"]},{kind:"symbol",latexTrigger:"\\mathrm{True}",parse:"True"},{kind:"symbol",latexTrigger:"\\operatorname{True}",parse:"True"},{kind:"symbol",latexTrigger:"\\mathsf{T}",parse:"True"},{name:"False",kind:"symbol",latexTrigger:["\\bot"]},{kind:"symbol",latexTrigger:"\\operatorname{False}",parse:"False"},{kind:"symbol",latexTrigger:"\\mathsf{F}",parse:"False"},{name:"And",kind:"infix",latexTrigger:["\\land"],precedence:235},{kind:"infix",latexTrigger:["\\wedge"],parse:"And",precedence:235},{kind:"infix",latexTrigger:"\\&",parse:"And",precedence:235},{kind:"infix",latexTrigger:"\\operatorname{and}",parse:"And",precedence:235},{name:"Or",kind:"infix",latexTrigger:["\\lor"],precedence:230},{kind:"infix",latexTrigger:["\\vee"],parse:"Or",precedence:230},{kind:"infix",latexTrigger:"\\parallel",parse:"Or",precedence:230},{kind:"infix",latexTrigger:"\\operatorname{or}",parse:"Or",precedence:230},{name:"Xor",kind:"infix",latexTrigger:["\\veebar"],precedence:232},{name:"Not",kind:"prefix",latexTrigger:["\\lnot"],precedence:880},{kind:"prefix",latexTrigger:["\\neg"],parse:"Not",precedence:880},{name:"Nand",kind:"infix",latexTrigger:["\\barwedge"],precedence:232},{name:"Nor",kind:"infix",latexTrigger:["\u22BD"],precedence:232},{kind:"function",symbolTrigger:"and",parse:"And"},{kind:"function",symbolTrigger:"or",parse:"Or"},{kind:"function",symbolTrigger:"not",parse:"Not"},{name:"Implies",kind:"infix",precedence:220,associativity:"right",latexTrigger:["\\implies"],serialize:"\\implies"},{latexTrigger:["\\Rightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{latexTrigger:["\\rightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{latexTrigger:["\\Longrightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{latexTrigger:["\\longrightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{latexTrigger:["=",">"],kind:"infix",precedence:220,associativity:"right",parse:(e,n,t)=>{if(e.options.strict!==!1)return null;let i=e.parseExpression({...t,minPrec:220});return i===null?null:["Implies",n,i]}},{name:"Equivalent",latexTrigger:["\\iff"],kind:"infix",associativity:"right",precedence:219},{latexTrigger:["\\Leftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["\\leftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["\\Longleftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["\\longleftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["<","=",">"],kind:"infix",precedence:219,associativity:"right",parse:(e,n,t)=>{if(e.options.strict!==!1)return null;let i=e.parseExpression({...t,minPrec:219});return i===null?null:["Equivalent",n,i]}},{latexTrigger:["\\equiv"],kind:"infix",associativity:"right",precedence:219,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:219}),r=e.index,s=e.parseExpression({...t,minPrec:219});return s!==null&&v(s)==="Mod"?["Congruent",n,i,Q(m(s,1))]:(e.index=r,["Equivalent",n,Q(i)])}},{name:"Proves",kind:"infix",latexTrigger:["\\vdash"],precedence:220,associativity:"right",serialize:"\\vdash"},{name:"Entails",kind:"infix",latexTrigger:["\\vDash"],precedence:220,associativity:"right",serialize:"\\vDash"},{name:"Satisfies",kind:"infix",latexTrigger:["\\models"],precedence:220,associativity:"right",serialize:"\\models"},{name:"ForAll",kind:"prefix",latexTrigger:["\\forall"],precedence:200,serialize:dt("\\forall"),parse:on("ForAll")},{name:"Exists",kind:"prefix",latexTrigger:["\\exists"],precedence:200,serialize:dt("\\exists"),parse:on("Exists")},{name:"ExistsUnique",kind:"prefix",latexTrigger:["\\exists","!"],precedence:200,serialize:dt("\\exists!"),parse:on("ExistsUnique")},{name:"NotForAll",kind:"prefix",latexTrigger:["\\lnot","\\forall"],precedence:200,serialize:dt("\\lnot\\forall"),parse:on("NotForAll")},{name:"NotExists",kind:"prefix",latexTrigger:["\\lnot","\\exists"],precedence:200,serialize:dt("\\lnot\\exists"),parse:on("NotExists")},{name:"KroneckerDelta",kind:"prefix",latexTrigger:["\\delta","_"],precedence:200,serialize:(e,n)=>{let t=S(n);return t.length===0?"\\delta":t.every(i=>w(i))?`\\delta_{${t.map(i=>e.serialize(i)).join("")}}`:`\\delta_{${t.map(i=>e.serialize(i)).join(", ")}}`},parse:e=>{let n=e.parseGroup();if(n===null){let i=e.parseToken();return i?["KroneckerDelta",i]:null}let t=_n(n);return t&&t.length<=2?["KroneckerDelta",...t]:v(n)==="InvisibleOperator"?["KroneckerDelta",...S(n)]:n!==null?["KroneckerDelta",n]:null}},{name:"Boole",kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:(e,n)=>{let t=v(n);return!t||!Nn.some(i=>i.name===t)?null:["Boole",n]}},{kind:"matchfix",openTrigger:"\\llbracket",closeTrigger:"\\rrbracket",parse:(e,n)=>{let t=v(n);return!t||!Nn.some(i=>i.name===t)?null:["Boole",n]}},{name:"Predicate",serialize:(e,n)=>{let t=S(n);if(t.length===0)return"";let i=t[0],r=typeof i=="string"?i:e.serialize(i);if(t.length===1)return r;let s=t.slice(1).map(o=>e.serialize(o));return`${r}(${s.join(", ")})`}}];function dt(e){return(n,t)=>{let i=S(t);if(i.length===0)return e;if(i.length===1)return`${e} ${n.serialize(i[0])}`;let r=n.serialize(i[0]),s=n.serialize(i[1]);return`${e} ${r}, ${s}`}}function za(e,n){return e.peek==="\\to"||e.peek==="\\rightarrow"||e.peek==="\\implies"||e.peek==="\\Rightarrow"||e.peek==="\\iff"||e.peek==="\\Leftrightarrow"||e.peek==="\\land"||e.peek==="\\wedge"||e.peek==="\\lor"||e.peek==="\\vee"||(n?.condition?.(e)??!1)}function on(e){return(n,t)=>{let i=n.index,r=n.options.quantifierScope!=="loose",s=n.parseSymbol(t);if(s){if(n.skipSpace(),n.match(",")||n.match("\\mid")||n.match(".")||n.match(":")||n.match("\\colon")){let l=r?{...t,condition:f=>za(f,t)}:t;n.enterQuantifierScope();let c=n.parseExpression(l);return n.exitQuantifierScope(),[e,s,Q(c)]}n.enterQuantifierScope();let u=n.parseEnclosure();if(n.exitQuantifierScope(),u)return[e,s,Q(u)]}n.index=i;let o={...t,condition:u=>u.peek===":"||u.peek==="\\colon"||(t?.condition?.(u)??!1)},a=n.parseExpression(o);if(a===null)return null;if(n.skipSpace(),n.matchAny([",","\\mid",":","\\colon"])){let u=r?{...t,condition:c=>za(c,t)}:t;n.enterQuantifierScope();let l=n.parseExpression(u);return n.exitQuantifierScope(),[e,a,Q(l)]}if(n.match("(")){n.enterQuantifierScope();let u=n.parseExpression(t);return n.exitQuantifierScope(),n.match(")")?[e,a,Q(u)]:null}return null}}var Rf={x:"First",y:"Second",z:"Third",real:"Real",re:"Real",imag:"Imaginary",im:"Imaginary",count:"Length",total:"Sum",max:"Max",min:"Min"};function Ir(e){return Rf[e]??null}function Pf(e,n){if(e.skipVisualSpace(),e.match("\\operatorname")){let i=e.parseStringGroup();if(i===null)return null;let r=Ir(i.trim());return r===null?null:[r,n]}let t=e.peek;if(typeof t=="string"&&t.startsWith("\\")){let i=t.slice(1),r=Ir(i);return r!==null?(e.nextToken(),[r,n]):null}if(typeof t=="string"&&/^[a-zA-Z]$/.test(t)){let i=w(n);if(i!==null&&e.getSymbolType(i).matches("dictionary")){let s="";for(;typeof e.peek=="string"&&/^[a-zA-Z]$/.test(e.peek);)s+=e.nextToken();return["At",n,{str:s}]}let r=Ir(t);return r===null?null:(e.nextToken(),[r,n])}return null}function ja(e,n,t){e.addBoundary(t),e.skipVisualSpace();let i=e.parseExpression({minPrec:0});return i===null||(e.skipVisualSpace(),!e.matchBoundary())?(e.removeBoundary(),null):["When",n,i]}function Sr(e,n,t,i,r){if(n&&n.minPrec>=i)return null;let s=t?[t]:["Nothing"],o=!1;for(;!o;){for(o=!0,e.skipSpace();e.match(r);)s.push("Nothing"),e.skipSpace();if(e.skipVisualSpace(),e.atTerminator(n))s.push("Nothing");else{let a=e.parseExpression({...n,minPrec:i});s.push(a??"Nothing"),o=a===null}o||(e.skipSpace(),o=!e.match(r),o||e.skipVisualSpace())}return s}function Qe(e=""){return(n,t)=>{if(!t)return"";let i=S(t);if(i.length===0)return"";if(i.length===1)return n.serialize(i[0]);e={"&":"\\&",":":"\\colon","|":"\\mvert","-":"-","\xB7":"\\cdot","\u2012":"-","\u2013":"--","\u2014":"---","\u2015":"-","\u2022":"\\bullet","\u2026":"\\ldots"}[e]??e;let r=i.reduce((s,o)=>(s.push(n.serialize(o),e),s),[]);return r.pop(),I(r)}}var Xa=[{latexTrigger:["\\placeholder"],kind:"symbol",parse:e=>{for(;e.match("<space>"););if(e.match("["))for(;!e.match("]")&&!e.atBoundary;)e.nextToken();for(;e.match("<space>"););if(e.match("<{>"))for(;!e.match("<}>")&&!e.atBoundary;)e.nextToken();return"Nothing"}},{name:"ContinuationPlaceholder",latexTrigger:["\\dots"]},{latexTrigger:["\\ldots"],parse:"ContinuationPlaceholder"},{latexTrigger:[".",".","."],parse:"ContinuationPlaceholder"},{name:"Function",latexTrigger:["\\mapsto"],kind:"infix",precedence:We,parse:(e,n,t)=>{let i=[];if(v(n)==="Delimiter"&&(n=m(n,1)??"Nothing"),v(n)==="Sequence")for(let s of S(n)){if(!w(s))return null;i.push(w(s))}else{if(!w(n))return null;i=[w(n)]}let r=e.parseExpression({minPrec:We})??"Nothing";return v(r)==="Delimiter"&&(r=m(r,1)??"Nothing"),v(r)==="Sequence"&&(r=["Block",...S(r)]),["Function",r,...i]},serialize:(e,n)=>{let t=S(n);return t.length<1?"()\\mapsto()":t.length===1?I(["()","\\mapsto",e.serialize(m(n,1))]):t.length===2?I([e.serialize(m(n,2)),"\\mapsto",e.serialize(m(n,1))]):I([e.wrapString(S(n)?.slice(1).map(i=>e.serialize(i)).join(", "),"normal"),"\\mapsto",e.serialize(m(n,1))])}},{name:"Apply",kind:"function",symbolTrigger:"apply",serialize:(e,n)=>{let t=m(n,1),i=v(t);if(i==="InverseFunction"||i==="Derivative"){let o=e.options.applyFunctionStyle(n,e.level),a=S(n).slice(1);return e.serializeFunction(t,e.dictionary.ids.get(i))+e.wrapString(a.map(u=>e.serialize(u)).join(", "),o)}let r=m(n,2);if(typeof t=="string"||!r){let o=S(n).slice(1);return e.serialize(o)}if(ne(n)===2)return I([e.wrap(t,20),"\\lhd",e.wrap(r,20)]);let s=e.options.applyFunctionStyle(n,e.level);return I(["\\operatorname{apply}",e.wrapString(e.serialize(i)+", "+e.serialize(["List",...S(n)]),s)])}},{latexTrigger:"\\lhd",kind:"infix",precedence:20,parse:"Apply"},{latexTrigger:"\\rhd",kind:"infix",precedence:20,parse:(e,n,t)=>["Apply",e.parseExpression({minPrec:21})??"Nothing",n]},{name:"EvaluateAt",openTrigger:".",closeTrigger:"|",kind:"matchfix",serialize:(e,n)=>{let t=m(n,1);if(!t)return"";let i=S(n).slice(1);if(v(t)==="Function"){let r=S(t).slice(1),s=m(t,1);if(v(s)==="Block"&&ne(s)===1&&(s=m(s,1)),r.length>0)return`\\left.\\left(${e.serialize(s)}\\right)\\right|_{${r.map((o,a)=>`${e.serialize(o)}=${e.serialize(i[a])}`).join(", ")}}`}return`\\left.\\left(${e.serialize(t)}\\right)\\right|_{${i.map(r=>e.serialize(r)).join(", ")}}`}},{name:"Assign",latexTrigger:"\\coloneq",kind:"infix",associativity:"right",precedence:pt,serialize:(e,n)=>{let t=Tr(m(n,1));if(v(m(n,2))==="Function"){let i=m(n,2),r=Tr(m(i,1)),s=S(i).slice(1);return I([e.serialize(t),e.wrapString(s.map(o=>e.serialize(o)).join(", "),e.options.applyFunctionStyle(n,e.level)),"\\coloneq",e.serialize(r)])}return I([e.serialize(t),"\\coloneq",e.serialize(m(n,2))])},parse:pi},{latexTrigger:"\\coloneqq",kind:"infix",associativity:"right",precedence:pt,parse:pi},{latexTrigger:"\\colonequals",kind:"infix",associativity:"right",precedence:pt,parse:pi},{latexTrigger:[":","="],kind:"infix",associativity:"right",precedence:pt,parse:pi},{name:"Colon",latexTrigger:":",kind:"infix",associativity:"right",precedence:240,serialize:(e,n)=>I([e.serialize(m(n,1)),"\\colon",e.serialize(m(n,2))])},{latexTrigger:"\\colon",kind:"infix",associativity:"right",precedence:240,parse:"Colon"},{name:"BaseForm",serialize:(e,n)=>{let t=F(m(n,2))??NaN;if(isFinite(t)&&t>=2&&t<=36){let i=F(m(n,1))??NaN;if(isFinite(i)&&Number.isInteger(i)){let r=Number(i).toString(t),s=0;if(t===2||t===10?s=4:t===16?s=2:t>16&&(s=4),s>0){let o=r;r="";for(let a=0;a<o.length;a++)a>0&&a%s===0&&(r="\\, "+r),r=o[o.length-a-1]+r}return`(\\text{${r}}_{${t}}`}}return"\\operatorname{BaseForm}("+e.serialize(m(n,1))+", "+e.serialize(m(n,2))+")"}},{name:"Sequence",serialize:Qe(" ")},{name:"InvisibleOperator",serialize:Qe("")},{name:"Delimiter",serialize:(e,n)=>{let t=e.options.groupStyle(n,e.level+1),i=m(n,1),r={Set:"{,}",List:"[,]",Tuple:"(,)",Single:"(,)",Pair:"(,)",Triple:"(,)",Sequence:"(,)",String:'""'}[v(i)],s=r?i:["Sequence",i];if(r??="(,)",ne(n)>1){let c=j(m(n,2));typeof c=="string"&&c.length<=3&&(r=c)}let[o,a,u]=["","",""];r.length===3?[o,a,u]=r:r.length===2?[o,u]=r:r.length===1&&(a=r);let l=i?s?Qe(a)(e,s):e.serialize(i):"";return e.wrapString(l,t,o+u)}},{name:"Tuple",serialize:(e,n)=>I(["(",Qe(",")(e,n),")"])},{name:"Pair",serialize:(e,n)=>I(["(",Qe(",")(e,n),")"])},{name:"Triple",serialize:(e,n)=>I(["(",Qe(",")(e,n),")"])},{name:"Single",serialize:(e,n)=>I(["(",Qe(",")(e,n),")"])},{name:"Domain",serialize:(e,n)=>v(n)==="Error"?e.serialize(n):`\\mathbf{${e.serialize(m(n,1))}}`},{latexTrigger:["\\mathtip"],parse:e=>{let n=e.parseGroup();return e.parseGroup(),n}},{latexTrigger:["\\texttip"],parse:e=>{let n=e.parseGroup();return e.parseGroup(),n}},{latexTrigger:["\\error"],parse:e=>["Error",e.parseGroup()]},{name:"Error",serialize:(e,n)=>{let t=m(n,1);if(j(t)==="missing")return`\\error{${e.options.missingSymbol??"\\placeholder{}"}}`;let i=Ff(e,n)||"\\blacksquare",r=v(t)==="ErrorCode"?j(m(t,1)):j(t);return r==="incompatible-type"?w(m(t,3))==="Undefined"?`\\mathtip{\\error{${i}}}{\\notin ${e.serialize(m(t,2))}}`:`\\mathtip{\\error{${i}}}{\\in ${e.serialize(m(t,3))}\\notin ${e.serialize(m(t,2))}}`:typeof r=="string"?`\\error{${i}}`:`\\error{${i}}`}},{name:"ErrorCode",serialize:(e,n)=>{let t=j(m(n,1));return t==="missing"?e.options.missingSymbol??"\\placeholder{}":t==="unexpected-command"||t==="unexpected-operator"||t==="unexpected-token"||t==="invalid-symbol"||t==="unknown-environment"||t==="unexpected-base"||t==="incompatible-type"?"":`\\texttip{\\error{\\blacksquare}}{\\mathtt{${t}}}`}},{name:"FromLatex",serialize:(e,n)=>`\\texttt{${Ha(j(m(n,1)))}}`},{name:"Latex",serialize:(e,n)=>n===null?"":I(li(n,t=>j(t)??e.serialize(t)))},{name:"LatexString",serialize:(e,n)=>n===null?"":I(li(n,t=>e.serialize(t)))},{name:"LatexTokens",serialize:Df},{kind:"postfix",precedence:850,latexTrigger:["."],parse:Pf},{name:"At",kind:"postfix",precedence:810,latexTrigger:["["],parse:Mr("]"),serialize:(e,n)=>{let t=S(n),i=e.serialize(t[0]??"Nothing"),r=t.slice(1).map(s=>e.serialize(s));return e.indexStyle(n,e.level)==="bracket"?I([i,"[",r.join(", "),"]"]):En("_",i,r.join(","))}},{kind:"postfix",precedence:810,latexTrigger:["\\lbrack"],parse:Mr("\\rbrack")},{kind:"postfix",precedence:810,latexTrigger:["\\left","\\lbrack"],parse:Mr("\\right","\\rbrack")},{name:"When",kind:"postfix",precedence:800,latexTrigger:["\\left","\\{"],parse:(e,n)=>ja(e,n,["\\right","\\}"]),serialize:(e,n)=>{let t=m(n,1),i=m(n,2);if(!t||!i)return"";let s=(v(i)==="And"?S(i)??[]:[i]).map(o=>`\\left\\{${e.serialize(o)}\\right\\}`).join("");return`${e.serialize(t)}${s}`}},{kind:"postfix",precedence:800,latexTrigger:["\\{"],parse:(e,n)=>ja(e,n,["\\}"])},{kind:"postfix",latexTrigger:["_"],parse:(e,n,t)=>{let i=e.parseGroup()??e.parseToken();i===null&&e.options.strict===!1&&e.peek==="("&&(i=e.parseEnclosure());let r=w(n);return i!==null&&(r&&e.getSymbolType(r).matches("indexed_collection")||v(n)==="List")?(v(i)==="Delimiter"&&(i=m(i,1)??"Nothing"),v(i)==="Sequence"?["At",n,...S(i)]:["At",n,i]):["Subscript",n,i]}},{name:"List",kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:Qa,serialize:Lf},{kind:"matchfix",openTrigger:"(",closeTrigger:")",parse:Of},{latexTrigger:[","],kind:"infix",precedence:20,parse:(e,n,t)=>{let i=Sr(e,t,n,20,",");return i===null?null:["Delimiter",["Sequence",...i],{str:","}]}},{latexTrigger:[","],kind:"prefix",precedence:20,parse:(e,n)=>{let t=Sr(e,n,null,20,",");return t===null?null:["Delimiter",["Sequence",...t],{str:","}]}},{name:"Range",latexTrigger:[".","."],kind:"infix",precedence:800,parse:fi,serialize:(e,n)=>{let t=S(n);if(t.length===0)return"";if(t.length===1)return"1.."+e.serialize(m(n,1));if(t.length===2)return e.wrap(m(n,1),10)+".."+e.wrap(m(n,2),10);if(t.length===3){let i=F(m(n,3)),r=F(m(n,1));return i!==null&&r!==null?e.wrap(m(n,1),10)+".."+e.wrap(r+i,10)+".."+e.wrap(m(n,2),10):e.wrap(m(n,1),10)+"..("+(e.wrap(m(n,1),re)+"+"+e.wrap(m(n,3),re))+").."+e.wrap(m(n,2),10)}return""}},{latexTrigger:[".",".","."],kind:"infix",precedence:800,parse:fi},{latexTrigger:["\\ldots"],kind:"infix",precedence:800,parse:fi},{latexTrigger:["\\dots"],kind:"infix",precedence:800,parse:fi},{latexTrigger:[";"],kind:"infix",precedence:19,parse:(e,n,t)=>{let i=Sr(e,t,n,19,";");return i===null?null:i.some(r=>v(r)==="Assign")?Bf(i):["Delimiter",["Sequence",...i],"';'"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"none",precedence:21,parse:(e,n,t)=>{let i=e.index;return Te(e,"where")?Wa(e,n,t):(e.index=i,null)}},{symbolTrigger:"where",kind:"infix",associativity:"none",precedence:21,parse:(e,n,t)=>Wa(e,n,t)},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:235,parse:(e,n,t)=>{let i=e.index;if(!Te(e,"and"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:235});return["And",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:230,parse:(e,n,t)=>{let i=e.index;if(!Te(e,"or"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:230});return["Or",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:219,parse:(e,n,t)=>{let i=e.index;if(!Te(e,"iff"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:219});return["Equivalent",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:219,parse:(e,n,t)=>{let i=e.index;if(!Te(e,"if and only if"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:219});return["Equivalent",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:21,parse:(e,n,t)=>{let i=e.index;if(!Te(e,"such that"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:21});return["Colon",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"prefix",precedence:200,parse:(e,n)=>{let t=e.index;return Te(e,"for all")?on("ForAll")(e,n):(e.index=t,null)}},{latexTrigger:["\\text"],kind:"prefix",precedence:200,parse:(e,n)=>{let t=e.index;return Te(e,"there exists")?on("Exists")(e,n):(e.index=t,null)}},{name:"Block",serialize:(e,n)=>{let t=S(n);return!t||t.length===0?"":t.filter(r=>v(r)!=="Declare").map(r=>e.serialize(r)).join("; ")}},{name:"If",serialize:(e,n)=>{let t=S(n);return!t||t.length<3?"":I(["\\text{if }",e.serialize(t[0]),"\\text{ then }",e.serialize(t[1]),"\\text{ else }",e.serialize(t[2])])}},{name:"Loop",serialize:(e,n)=>{let t=S(n);if(!t||t.length<2)return"";let i=t[0],r=t.slice(1);if(!r.every(a=>v(a)==="Element"))return I(["\\operatorname{Loop}(",e.serialize(i),", ",e.serialize(r[0]),")"]);if(r.length===1){let a=r[0],u=m(a,1),l=m(a,2);if(v(l)==="Range"){let c=m(l,1),f=m(l,2);return I(["\\text{for }",e.serialize(u),"\\text{ from }",e.serialize(c),"\\text{ to }",e.serialize(f),"\\text{ do }",e.serialize(i)])}return I([e.serialize(i)," \\operatorname{for} ",e.serialize(u)," = ",e.serialize(l)])}let o=r.map(a=>{let u=m(a,1),l=m(a,2);return I([e.serialize(u)," = ",e.serialize(l)])}).join(", ");return I([e.serialize(i)," \\operatorname{for} ",o])}},{name:"Break",serialize:()=>"\\text{break}"},{name:"Continue",serialize:()=>"\\text{continue}"},{name:"Return",serialize:(e,n)=>{let t=m(n,1);return!t||w(t)==="Nothing"?"\\text{return}":I(["\\text{return }",e.serialize(t)])}},{symbolTrigger:"if",kind:"prefix",precedence:245,parse:(e,n)=>Za(e,n)},{symbolTrigger:"for",kind:"prefix",precedence:245,parse:(e,n)=>Ya(e,n)},{symbolTrigger:"for",kind:"infix",associativity:"none",precedence:19,parse:(e,n,t)=>Ka(e,n,t)},{symbolTrigger:"break",kind:"prefix",precedence:245,parse:()=>["Break"]},{symbolTrigger:"continue",kind:"prefix",precedence:245,parse:()=>["Continue"]},{symbolTrigger:"return",kind:"prefix",precedence:245,parse:(e,n)=>["Return",e.parseExpression(n)??"Nothing"]},{name:"Text",serialize:(e,n)=>{let t=S(n);if(t.length===0)return"";let i=-1,r=-1;for(let a=0;a<t.length;a++)j(t[a])!==null&&(i<0&&(i=a),r=a);if(i<0)return I(t.map(a=>e.serialize(a)));let s=[];for(let a=0;a<i;a++)s.push(e.serialize(t[a]));let o="";for(let a=i;a<=r;a++){let u=j(t[a]);u!==null?o+=Ha(u):v(t[a])==="Annotated"||v(t[a])==="Text"?o+=e.serialize(t[a]):o+="$"+e.serialize(t[a])+"$"}s.push("\\text{"+o+"}");for(let a=r+1;a<t.length;a++)s.push(e.serialize(t[a]));return I(s)}},{name:"String",latexTrigger:["\\text"],parse:(e,n)=>{let t=e.index;return Te(e,"if")?Za(e,n):(e.index=t,Te(e,"for")?Ya(e,n):(e.index=t,Te(e,"break")?["Break"]:(e.index=t,Te(e,"continue")?["Continue"]:(e.index=t,Te(e,"return")?["Return",e.parseExpression(n)??"Nothing"]:(e.index=t,Oe(e))))))},serialize:(e,n)=>{let t=S(n);return t.length===0?"\\text{}":I(["\\text{",t.map(i=>e.serialize(i)).join(""),"}"])}},{name:"Subscript",latexTrigger:["_"],kind:"infix",serialize:(e,n)=>ne(n)===2?e.serialize(m(n,1))+"_{"+e.serialize(m(n,2))+"}":"_{"+e.serialize(m(n,1))+"}"},{name:"Superplus",latexTrigger:["^","+"],kind:"postfix"},{name:"Subplus",latexTrigger:["_","+"],kind:"postfix"},{name:"Superminus",latexTrigger:["^","-"],kind:"postfix",parse:(e,n)=>e.options.strict===!1&&/^[0-9]$/.test(e.peek)?null:["Superminus",n]},{name:"Subminus",latexTrigger:["_","-"],kind:"postfix"},{latexTrigger:["^","*"],kind:"postfix",parse:(e,n)=>["Superstar",n]},{latexTrigger:["_","*"],kind:"postfix",parse:(e,n)=>["Substar",n]},{name:"Substar",latexTrigger:["_","\\star"],kind:"postfix"},{name:"Superdagger",latexTrigger:["^","\\dagger"],kind:"postfix"},{latexTrigger:["^","\\dag"],kind:"postfix",parse:(e,n)=>["Superdagger",n]},{name:"Prime",latexTrigger:["^","\\prime"],kind:"postfix",parse:(e,n)=>Xe(e,n,1),serialize:(e,n)=>{let t=F(m(n,2))??1,i=e.serialize(m(n,1));return t===1?i+"^\\prime":t===2?i+"^\\doubleprime":t===3?i+"^\\tripleprime":i+"^{("+e.serialize(m(n,2))+")}"}},{latexTrigger:"^{\\prime\\prime}",kind:"postfix",parse:(e,n)=>Xe(e,n,2)},{latexTrigger:"^{\\prime\\prime\\prime}",kind:"postfix",parse:(e,n)=>Xe(e,n,3)},{latexTrigger:["^","\\doubleprime"],kind:"postfix",parse:(e,n)=>Xe(e,n,2)},{latexTrigger:["^","\\tripleprime"],kind:"postfix",parse:(e,n)=>Xe(e,n,3)},{latexTrigger:"'",kind:"postfix",precedence:810,parse:(e,n)=>Xe(e,n,1)},{latexTrigger:"\\prime",kind:"postfix",precedence:810,parse:(e,n)=>Xe(e,n,1)},{latexTrigger:"\\doubleprime",kind:"postfix",precedence:810,parse:(e,n)=>Xe(e,n,2)},{latexTrigger:"\\tripleprime",kind:"postfix",precedence:810,parse:(e,n)=>Xe(e,n,3)},{latexTrigger:["^","<{>","("],kind:"postfix",parse:(e,n,t)=>{let i=w(n);if(!i||!e.getSymbolType(i).matches("function"))return null;e.addBoundary([")"]);let r=e.parseExpression(t);return e.matchBoundary()?e.match("<}>")?["Derivative",n,r]:null:(e.removeBoundary(),null)}},{name:"InverseFunction",latexTrigger:"^{-1",kind:"postfix",parse:(e,n)=>{if(v(n)==="Matrix")return e.match("<}>"),["Inverse",n];let t=w(n);if(!t)return null;let i=e.getSymbolType(t);if(i.matches(new de("matrix")))return e.match("<}>"),["Inverse",n];if(!i.matches("function"))return null;let r=0;for(;!e.atEnd&&!e.match("<}>");)if(e.match("'"))r++;else if(e.match("\\prime"))r++;else if(e.match("\\doubleprime"))r+=2;else if(e.match("\\tripleprime"))r+=3;else return null;return r===1?["Derivative",["InverseFunction",n]]:r>0?["Derivative",["InverseFunction",n],r]:["InverseFunction",n]},serialize:(e,n)=>e.serialize(m(n,1))+"^{-1}"},{name:"Derivative",serialize:(e,n)=>{let t=F(m(n,2))??1,i=e.serialize(m(n,1));return t===1?i+"^{\\prime}":t===2?i+"^{\\doubleprime}":t===3?i+"^{\\tripleprime}":i+"^{("+e.serialize(m(n,2))+")}"}},{name:"D",serialize:(e,n)=>{if(v(n)!=="D")return"D";let t=m(n,1),i=m(n,2);if(!t||!i)return"D";let r=1,s=t;for(;v(s)==="D";){let l=m(s,2);if(w(l)===w(i))r++,s=m(s,1);else break}let o=s;v(s)==="Function"&&(o=m(s,1)??s);let a=e.serialize(o),u=e.serialize(i);return r===1?`\\frac{\\mathrm{d}}{\\mathrm{d}${u}}${a}`:`\\frac{\\mathrm{d}^{${r}}}{\\mathrm{d}${u}^{${r}}}${a}`}},{name:"NewtonDerivative1",latexTrigger:["\\dot"],kind:"prefix",precedence:740,parse:e=>{let n=e.parseGroup();if(n===null)return null;let t=e.options.timeDerivativeVariable;return["D",n,t]}},{name:"NewtonDerivative2",latexTrigger:["\\ddot"],kind:"prefix",precedence:740,parse:e=>{let n=e.parseGroup();if(n===null)return null;let t=e.options.timeDerivativeVariable;return["D",["D",n,t],t]}},{name:"NewtonDerivative3",latexTrigger:["\\dddot"],kind:"prefix",precedence:740,parse:e=>{let n=e.parseGroup();if(n===null)return null;let t=e.options.timeDerivativeVariable;return["D",["D",["D",n,t],t],t]}},{name:"NewtonDerivative4",latexTrigger:["\\ddddot"],kind:"prefix",precedence:740,parse:e=>{let n=e.parseGroup();if(n===null)return null;let t=e.options.timeDerivativeVariable;return["D",["D",["D",["D",n,t],t],t],t]}},{name:"EulerDerivative",latexTrigger:["D"],kind:"expression",parse:e=>{let n=1,t=null,i=!1;for(;!i;)if(e.match("_")){if(t=e.parseGroup()??e.parseToken(),!t)return null}else if(e.match("^")){let o=e.parseGroup()??e.parseToken();n=F(o)??1}else i=!0;if(!t||w(t)===null)return null;e.skipSpace();let r=e.parseExpression({minPrec:740});if(!r)return null;let s=r;for(let o=0;o<n;o++)s=["D",s,t];return s}},{kind:"environment",name:"Which",symbolTrigger:"cases",parse:kr,serialize:(e,n)=>{let t=[],i=S(n);if(i.length>0)for(let r=0;r<=i.length-2;r+=2){let s=[];s.push(e.serialize(i[r+1])),s.push(e.serialize(i[r])),t.push(s.join("&"))}return I(["\\begin{cases}",t.join("\\\\"),"\\end{cases}"])}},{kind:"environment",symbolTrigger:"dcases",parse:kr},{kind:"environment",symbolTrigger:"rcases",parse:kr}];function Oe(e,n){if(!e.match("<{>"))return"''";let t=[],i="",r=null,s=()=>{r!==null&&i?t.push(["Annotated",`'${i}'`,ui(r)]):i&&t.push(`'${i}'`),i="",r=null};for(;!e.atEnd&&!e.match("<}>");)if(e.peek==="<{>")s(),t.push(Oe(e));else if(e.match("\\textbf"))s(),t.push(Oe(e,{fontWeight:"bold"}));else if(e.match("\\textmd"))s(),t.push(Oe(e,{fontStyle:"normal"}));else if(e.match("\\textup"))s(),t.push(Oe(e,{fontStyle:"normal"}));else if(e.match("\\textsl"))s(),t.push(Oe(e,{fontStyle:"italic"}));else if(e.match("\\textit"))s(),t.push(Oe(e,{fontStyle:"italic"}));else if(e.match("\\texttt"))s(),t.push(Oe(e,{fontFamily:"monospace"}));else if(e.match("\\textsf"))s(),t.push(Oe(e,{fontFamily:"sans-serif"}));else if(e.match("\\textcolor")){let a=e.index,u=e.parseStringGroup();if(u!==null){s();let l=Oe(e);t.push(["Annotated",l,ui({color:u})])}else e.index=a,i+="\\textcolor"}else if(e.match("\\color")){let a=e.parseStringGroup();a!==null&&(s(),r={color:a})}else if(e.match("<space>"))i+=" ";else if(e.match("<$>")){let a=e.index,u=e.parseExpression()??"Nothing";e.skipSpace(),e.match("<$>")?(s(),t.push(u)):(i+="$",e.index=a)}else if(e.match("<$$>")){let a=e.index,u=e.parseExpression()??"Nothing";e.skipSpace(),e.match("<$$>")?(s(),t.push(u)):(i+="$$",e.index=a)}else{let a=e.parseChar()??e.nextToken();i+={"\\enskip":"\u2002","\\enspace":"\u2002","\\quad":"\u2003","\\qquad":"\u2003\u2003","\\space":"\u2003","\\ ":"\u2003","\\;":"\u2004","\\,":"\u2009","\\:":"\u205F","\\!":"","\\{":"{","\\}":"}","\\$":"$","\\&":"&","\\#":"#","\\%":"%","\\_":"_","\\textbackslash":"\\","\\textasciitilde":"~","\\textasciicircum":"^","\\textless":"<","\\textgreater":">","\\textbar":"|","\\textunderscore":"_","\\textbraceleft":"{","\\textbraceright":"}","\\textasciigrave":"`","\\textquotesingle":"'","\\textquotedblleft":"\u201C","\\textquotedblright":"\u201D","\\textquotedbl":'"',"\\textquoteleft":"\u2018","\\textquoteright":"\u2019","\\textbullet":"\u2022","\\textdagger":"\u2020","\\textdaggerdbl":"\u2021","\\textsection":"\xA7","\\textparagraph":"\xB6","\\textperiodcentered":"\xB7","\\textellipsis":"\u2026","\\textemdash":"\u2014","\\textendash":"\u2013","\\textregistered":"\xAE","\\texttrademark":"\u2122","\\textdegree":"\xB0"}[a]??a}s();let o;return t.length===1?o=t[0]:t.every(a=>j(a)!==null)?o="'"+t.map(a=>j(a)).join("")+"'":o=["Text",...t],n?["Annotated",o,ui(n)]:o}function Df(e,n){return n===null?"":I(li(n,t=>{let i=j(t);return i===null?e.serialize(t):i==="<{>"?"{":i==="<}>"?"}":i==="<$>"?"$":i==="<$$>"?"$$":i==="<space>"?" ":i}))}function Ha(e){return e===null?"":e.replace(/[{}\[\]\\:\-\$%]/g,n=>({"{":"\\lbrace ","}":"\\rbrace ","[":"\\lbrack ","]":"\\rbrack ",":":"\\colon ","\\":"\\backslash "})[n]??"\\"+n)}function Ff(e,n){let t=m(n,2);return t?v(t)==="LatexString"?j(m(t,1))??"":v(t)==="Hold"?e.serialize(m(t,1)):e.serialize(t):""}function Xe(e,n,t){for(;!e.atEnd;)if(e.match("'")||e.match("\\prime"))t++;else if(e.match("\\doubleprime"))t+=2;else if(e.match("\\tripleprime"))t+=3;else break;let i=v(n);if(i==="Derivative"||i==="Prime"){let a=F(m(n,2))??1;return[i,Q(m(n,1)),a+t]}let r=w(n),s=r&&e.getSymbolType(r).matches("function")||v(n);e.skipSpace();let o=e.parseArguments("enclosure");if(o&&o.length>0){let a=o[0],u=w(a)??"x",c=typeof n=="string"?[n,...o]:["Apply",n,...o];for(let f=0;f<t;f++)c=["D",c,u];return c}return s?t===1?["Derivative",n]:["Derivative",n,t]:t===1?["Prime",Q(n)]:["Prime",Q(n),t]}function Of(e,n){if(Y(n))return["Delimiter"];let t=v(n);if(t==="Delimiter"&&m(n,2)!==null){let i=j(m(n,2));if(i?.length===1)return["Delimiter",m(n,1)??"Nothing",{str:`(${i})`}]}return t==="Matrix"&&(j(m(n,2))??"..")===".."?["Matrix",m(n,1)]:["Delimiter",n]}function Qa(e,n){if(Y(n))return["List"];let t=v(n);if(t==="Range"||t==="Linspace")return n;if(t==="Sequence"){let i=S(n),r=Ua(i,e);return r||["List",...i]}if(t==="Delimiter"){let i=j(m(n,2))??"...";if(i===";"||i===".;.")return["List",...(S(m(n,1))??[]).map(r=>Qa(e,r))];if(i===","||i===".,."){if(n=m(n,1),v(n)==="Sequence"){let r=S(n),s=Ua(r,e);return s||["List",...r]}return["List",n??"Nothing"]}}return["List",n]}function Ua(e,n){if(e.length<4)return null;let t=e[e.length-2];if(w(t)!=="ContinuationPlaceholder")return null;let i=e.slice(0,-2),r=e[e.length-1];if(i.length<2)return null;let s=i.map(F);if(s.some(l=>l===null))return null;let o=s,a=o[o.length-1]-o[o.length-2],u=n.options.tolerance;if(Math.abs(a)<u)return n.error("degenerate-range-step",n.index);for(let l=1;l<o.length;l++)if(Math.abs(o[l]-o[l-1]-a)>u)return n.error("inconsistent-range-samples",n.index);return["Range",o[0],r,a]}function Lf(e,n){return ne(n)>1&&S(n).every(t=>{let i=v(t);return vr(i)||xr(i)})?I(["\\begin{cases}",Qe("\\\\")(e,n),"\\end{cases}"]):I(["\\bigl\\lbrack",Qe(", ")(e,n),"\\bigr\\rbrack"])}function fi(e,n){if(n===null)return null;let t=e.parseExpression({minPrec:270});if(t===null)return null;if(v(t)==="Range"){let i=m(t,1),r=m(t,2);return i&&r?["Range",n,r,["Subtract",i,n]]:null}return["Range",n,t]}var mi={"(":"(",")":")","[":"\\lbrack","]":"\\rbrack","\u27E6":"\\llbrack","\u27E7":"\\rrbrack","{":"\\lbrace","}":"\\rbrace","<":"\\langle",">":"\\rangle","\u2016":"\\Vert","\\":"\\backslash","\u2308":"\\lceil","\u2309":"\\rceil","\u230A":"\\lfloor","\u230B":"\\rfloor","\u231C":"\\ulcorner","\u231D":"\\urcorner","\u231E":"\\llcorner","\u231F":"\\lrcorner","\u23B0":"\\lmoustache","\u23B1":"\\rmoustache"};function pi(e,n,t){let i=(t?.minPrec??0)>=19,r=w(n);if(r&&r.includes("_")){let a=r.indexOf("_"),u=r.substring(0,a),l=r.substring(a+1),c=parseInt(l,10),f=!isNaN(c)&&String(c)===l?c:l,p=f!==""&&(typeof f=="number"||typeof f=="string"&&f.length===1);(e.getSymbolType(u).matches("indexed_collection")||!i&&p)&&(n=["Subscript",u,f])}if(v(n)==="InvisibleOperator"&&ne(n)===2&&v(m(n,2))==="Delimiter"){let a=w(m(n,1));if(!a)return null;let u=e.parseExpression({...t??{},minPrec:20});if(u===null)return null;let l=m(m(n,2),1),c=[];return v(l)==="Sequence"?c=[...S(l)]:l&&(c=[l]),["Assign",a,["Function",u,...c??[]]]}if(v(n)==="Subscript"&&w(m(n,1))){let a=w(m(n,1));if(!e.getSymbolType(a).matches("indexed_collection")){let c=m(n,2),f=(c!==null&&typeof c=="string"?c:void 0)??(c!==null&&typeof c=="number"?String(c):void 0);if(f&&i){let p=e.parseExpression({...t??{},minPrec:20});return p===null?null:["Assign",a+"_"+f,p]}}let u=e.parseExpression({...t??{},minPrec:20});if(u===null)return null;let l=m(n,2);return j(l)!==null?["Assign",n,u]:w(l)?["Assign",n,u]:["Assign",n,u]}let s=v(n);if(s){let a=S(n),u=e.parseExpression({...t??{},minPrec:20});return u===null?null:["Assign",s,["Function",u,...a]]}if(!w(n))return null;let o=e.parseExpression({...t??{},minPrec:20});return o===null?null:["Assign",n,o]}function kr(e){let n=e.parseTabular();if(!n)return["List"];if(n.every(i=>{if(i.length!==1)return!1;let r=v(i[0]);return xr(r)||vr(r)}))return["List",...n.map(i=>i[0])];let t=[];for(let i of n)if(i.length===1)t.push("True"),t.push(i[0]);else if(i.length===2){let r=j(i[1]);t.push(r?"True":Nr(i[1])??"True"),t.push(i[0])}return["Which",...t]}function Te(e,n){let t=e.index;if(!e.match("<{>"))return e.index=t,!1;for(;e.match("<space>"););for(let i=0;i<n.length;i++)if(n[i]===" "){if(!e.match("<space>"))return e.index=t,!1;for(;e.match("<space>"););}else{if(e.peek!==n[i])return e.index=t,!1;e.nextToken()}for(;e.match("<space>"););return e.match("<}>")?!0:(e.index=t,!1)}function In(e,n){let t=e.index;if(e.skipVisualSpace(),e.match("\\text")){if(Te(e,n))return!0;e.index=t}let i=e.index,r=e.parseSymbol();return r!==null&&w(r)===n?!0:(e.index=i,!1)}function Sn(e,n){let t=e.index,i=In(e,n);return e.index=t,i}function Za(e,n){e.skipVisualSpace();let t=e.parseExpression({minPrec:0,condition:s=>Sn(s,"then")});if(t===null||!In(e,"then"))return null;e.skipVisualSpace();let i=e.parseExpression({minPrec:0,condition:s=>Sn(s,"else")});if(i===null||!In(e,"else"))return null;e.skipVisualSpace();let r=e.parseExpression(n)??"Nothing";return["If",t,i,r]}function Ya(e,n){let t=e.parseExpression({minPrec:0,condition:a=>Sn(a,"from")}),i=t?w(t):null;if(!i||!In(e,"from"))return null;let r=e.parseExpression({minPrec:0,condition:a=>Sn(a,"to")});if(r===null||!In(e,"to"))return null;let s=e.parseExpression({minPrec:0,condition:a=>Sn(a,"do")});return s===null||!In(e,"do")?null:["Loop",e.parseExpression(n)??"Nothing",["Element",i,["Range",r,s]]]}function Ka(e,n,t){let i={minPrec:21,condition:s=>{if(t?.condition?.(s))return!0;let o=s.index;s.skipVisualSpace();let a=s.peek===",";return s.index=o,!!(a||Sn(s,"where")||Sn(s,"with"))}},r=[];do{e.skipVisualSpace();let s=e.parseExpression(i);if(s===null)break;let o=v(s);if(o!=="Equal"&&o!=="Assign")return null;let a=m(s,1),u=m(s,2);if(!a||!u)return null;r.push(["Element",a,u]),e.skipVisualSpace()}while(e.match(","));return r.length===0?null:["Loop",n,...r]}function Wa(e,n,t){let i={minPrec:21,condition:a=>{if(t?.condition?.(a))return!0;let u=a.index;a.skipVisualSpace();let l=a.peek===",";return a.index=u,l}},r=[];do{e.skipVisualSpace();let a=e.parseExpression(i);if(!a)break;r.push(a),e.skipVisualSpace()}while(e.match(","));if(r.length===0)return null;let s=e.index;if(In(e,"for")){let a=Ka(e,n,t);if(a){let u=[];for(let l of r){let c=wr(l);v(c)==="Assign"&&u.push(["Declare",m(c,1)]),u.push(c)}return u.push(a),["Block",...u]}e.index=s}let o=[];for(let a of r){let u=wr(a);v(u)==="Assign"&&o.push(["Declare",m(u,1)]),o.push(u)}return o.push(n),["Block",...o]}function Bf(e){let n=[];for(let t of e){let i=wr(t);v(i)==="Assign"&&n.push(["Declare",m(i,1)]),n.push(i)}return["Block",...n]}function wr(e){if(v(e)!=="Assign")return e;let n=m(e,1);if(v(n)!=="Subscript")return e;let t=w(m(n,1));if(!t)return e;let i=m(n,2),r=(typeof i=="string"?i:void 0)??(typeof i=="number"?String(i):void 0);return r?["Assign",`${t}_${r}`,m(e,2)??"Nothing"]:e}function Mr(...e){return(n,t)=>{if(!w(t)&&v(t)!=="List")return null;let i=null;return e.length===0&&(i=n.parseGroup()),i??=n.parseExpression({minPrec:0}),i===null||e.length>0&&!n.matchAll(e)||e.length===0&&j(i)!==null?null:(v(i)==="Delimiter"&&(i=m(i,1)??"Nothing"),v(i)==="Sequence"?["At",t,...S(i)]:["At",t,i])}}var ht=[["alpha","\\alpha",945],["beta","\\beta",946],["gamma","\\gamma",947],["delta","\\delta",948],["epsilon","\\epsilon",949],["epsilonSymbol","\\varepsilon",1013],["zeta","\\zeta",950],["eta","\\eta",951],["theta","\\theta",952],["thetaSymbol","\\vartheta",977],["iota","\\iota",953],["kappa","\\kappa",954],["kappaSymbol","\\varkappa",1008],["lambda","\\lambda",955],["mu","\\mu",956],["nu","\\nu",957],["xi","\\xi",958],["omicron","\\omicron",959],["pi","\\pi",960],["piSymbol","\\varpi",982],["rho","\\rho",961],["rhoSymbol","\\varrho",1009],["sigma","\\sigma",963],["finalSigma","\\varsigma",962],["tau","\\tau",964],["phi","\\phi",981],["phiLetter","\\varphi",966],["upsilon","\\upsilon",965],["chi","\\chi",967],["psi","\\psi",968],["omega","\\omega",969],["Alpha","\\Alpha",913],["Beta","\\Beta",914],["Gamma","\\Gamma",915],["Delta","\\Delta",916],["Epsilon","\\Epsilon",917],["Zeta","\\Zeta",918],["Eta","\\Eta",919],["Theta","\\Theta",920],["Iota","\\Iota",921],["Kappa","\\Kappa",922],["Lambda","\\Lambda",923],["Mu","\\Mu",924],["Nu","\\Nu",925],["Xi","\\Xi",926],["Omicron","\\Omicron",927],["Rho","\\Rho",929],["Sigma","\\Sigma",931],["Tau","\\Tau",932],["Phi","\\Phi",934],["Upsilon","\\Upsilon",933],["Chi","\\Chi",935],["Psi","\\Psi",936],["Omega","\\Omega",937],["digamma","\\digamma",989],["aleph","\\aleph",8501],["bet","\\beth",8502],["gimel","\\gimel",8503],["dalet","\\daleth",8504],["ell","\\ell",8499],["turnedCapitalF","\\Finv",8498],["turnedCapitalG","\\Game",8513],["weierstrass","\\wp",8472],["eth","\\eth",240],["invertedOhm","\\mho",8487],["hBar","\\hbar",295],["hSlash","\\hslash",8463],["blackClubSuit","\\clubsuit",9827],["whiteHeartSuit","\\heartsuit",9825],["blackSpadeSuit","\\spadesuit",9824],["whiteDiamondSuit","\\diamondsuit",9826],["sharp","\\sharp",9839],["flat","\\flat",9837],["natural","\\natural",9838]],eu=[...ht.map(([e,n,t])=>({kind:"symbol",name:e,latexTrigger:[n],parse:e})),...ht.map(([e,n,t])=>({kind:"symbol",latexTrigger:[String.fromCodePoint(t)],parse:e}))];var nu=[{name:"To",latexTrigger:["\\to"],kind:"infix",precedence:270},{latexTrigger:["-",">"],kind:"infix",precedence:270,parse:(e,n,t)=>{if(e.options.strict!==!1)return null;let i=e.parseExpression({...t,minPrec:270});return i===null?null:["To",n,i]}}];function Le(e,n,t){if(Y(e))return null;let i,r=v(e);if(r==="Delimiter"){let l=j(m(e,2));if(l!==","&&l!=="(,)"&&l!=="[,]")return null;let c=m(e,1);v(c)==="Sequence"?i=[...S(c)]:i=c?[c]:[]}else if(r==="Sequence")i=[...S(e)];else return null;if(i.length!==2)return null;let[s,o]=i;return["Interval",n?["Open",s]:s,t?["Open",o]:o]}var tu=new Set(["Less","LessEqual","Greater","GreaterEqual","Equal","NotEqual","And","Or","Not"]),ru=[{name:"AlgebraicNumbers",latexTrigger:"\\overline\\Q"},{latexTrigger:"\\bar\\Q",parse:"AlgebraicNumbers"},{name:"ComplexNumbers",latexTrigger:["\\C"]},{latexTrigger:"\\mathbb{C}",parse:"ComplexNumbers"},{name:"UpperHalfPlane",latexTrigger:"\\mathbb{C}^+"},{latexTrigger:"\\mathbb{C}^{+}",parse:"UpperHalfPlane"},{latexTrigger:"\\C^+",parse:"UpperHalfPlane"},{latexTrigger:"\\C^{+}",parse:"UpperHalfPlane"},{name:"ImaginaryNumbers",latexTrigger:["\\imaginaryI","\\R"]},{name:"EmptySet",latexTrigger:["\\emptyset"]},{latexTrigger:["\\varnothing"],parse:"EmptySet"},{name:"Integers",latexTrigger:["\\Z"]},{latexTrigger:"\\mathbb{Z}",parse:"Integers"},{name:"RationalNumbers",latexTrigger:["\\Q"]},{latexTrigger:"\\mathbb{Q}",parse:"RationalNumbers"},{name:"RealNumbers",latexTrigger:["\\R"]},{latexTrigger:"\\mathbb{R}",parse:"RealNumbers"},{name:"TranscendentalNumbers",latexTrigger:"\\R-\\bar\\Q"},{latexTrigger:"\\R\\backslash\\bar\\Q",parse:"TranscendentalNumbers"},{name:"NegativeNumbers",latexTrigger:"\\R_{<0}"},{latexTrigger:"\\R^-",parse:"NegativeNumbers"},{latexTrigger:"\\R^{-}",parse:"NegativeNumbers"},{latexTrigger:"\\R^-",parse:"NegativeNumbers"},{latexTrigger:"\\R_-",parse:"NegativeNumbers"},{latexTrigger:"\\R_{-}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{\\lt}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{<}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{\\lt0}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{<0}",parse:"NegativeNumbers"},{name:"NonPositiveNumbers",latexTrigger:"\\R_{\\le0}"},{latexTrigger:"\\R^{\\leq0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{-0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{\\leq}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{0-}",parse:"NonPositiveNumbers"},{name:"PositiveNumbers",latexTrigger:"\\R_{>0}"},{latexTrigger:"\\R^+",parse:"PositiveNumbers"},{latexTrigger:"\\R^{+}",parse:"PositiveNumbers"},{latexTrigger:"\\R_+",parse:"PositiveNumbers"},{latexTrigger:"\\R_{+}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{\\gt}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{\\gt 0}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{>}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{>0}",parse:"PositiveNumbers"},{name:"NonNegativeNumbers",latexTrigger:"\\R_{\\geq0}"},{latexTrigger:"\\R^{0+}",parse:"NonNegativeNumbers"},{latexTrigger:"\\R^{\\geq}",parse:"NonNegativeNumbers"},{name:"ExtendedRealNumbers",latexTrigger:"\\overline\\R"},{latexTrigger:"\\bar\\R",parse:"ExtendedRealNumbers"},{name:"NegativeIntegers",latexTrigger:"\\Z_{<0}"},{latexTrigger:"\\Z_{\\lt0}",parse:"NegativeIntegers"},{latexTrigger:"\\Z^-",parse:"NegativeIntegers"},{latexTrigger:"\\Z^{-}",parse:"NegativeIntegers"},{latexTrigger:"\\Z_-",parse:"NegativeIntegers"},{latexTrigger:"\\Z_{-}",parse:"NegativeIntegers"},{latexTrigger:"\\Z^{\\lt}",parse:"NegativeIntegers"},{name:"NonPositiveIntegers",latexTrigger:"\\Z_{\\le0}"},{latexTrigger:"\\Z_{\\leq0}",parse:"NonPositiveIntegers"},{latexTrigger:"\\Z_{<0}",parse:"NonPositiveIntegers"},{name:"PositiveIntegers",latexTrigger:"\\N^*"},{latexTrigger:"\\Z_{>0}",parse:"PositiveIntegers"},{latexTrigger:"\\Z_{\\gt0}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{+}",parse:"PositiveIntegers"},{latexTrigger:"\\Z_+",parse:"PositiveIntegers"},{latexTrigger:"\\Z_{+}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{\\gt}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{\\gt0}",parse:"PositiveIntegers"},{latexTrigger:"\\N^+",parse:"PositiveIntegers"},{latexTrigger:"\\N^{+}",parse:"PositiveIntegers"},{latexTrigger:"\\N^*",parse:"PositiveIntegers"},{latexTrigger:"\\N^{*}",parse:"PositiveIntegers"},{latexTrigger:"\\N^\\star",parse:"PositiveIntegers"},{latexTrigger:"\\N^{\\star}",parse:"PositiveIntegers"},{latexTrigger:"\\N_1",parse:"PositiveIntegers"},{latexTrigger:"\\N_{1}",parse:"PositiveIntegers"},{name:"NonNegativeIntegers",latexTrigger:["\\N"]},{latexTrigger:"\\Z^{+0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{\\geq}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{\\geq0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{0+}",parse:"NonNegativeIntegers"},{latexTrigger:"\\mathbb{N}",parse:"NonNegativeIntegers"},{latexTrigger:"\\N_0",parse:"NonNegativeIntegers"},{latexTrigger:"\\N_{0}",parse:"NonNegativeIntegers"},{name:"ExtendedIntegers",latexTrigger:"\\overline\\Z"},{latexTrigger:"\\bar\\Z",parse:"ExtendedIntegers"},{name:"ExtendedRationalNumbers",latexTrigger:"\\overline\\Q"},{latexTrigger:"\\bar\\Q",parse:"ExtendedRationalNumbers"},{name:"ExtendedComplexNumbers",latexTrigger:"\\overline\\C"},{latexTrigger:"\\bar\\C",parse:"ExtendedComplexNumbers"},{latexTrigger:["^","\\complement"],kind:"postfix",parse:(e,n)=>["Complement",n]},{name:"Complement",latexTrigger:["^","<{>","\\complement","<}>"],kind:"postfix",serialize:(e,n)=>I([e.serialize(m(n,1)),"^\\complement"])},{name:"Intersection",latexTrigger:["\\cap"],kind:"infix",precedence:350},{name:"Interval",serialize:iu},{kind:"matchfix",openTrigger:["["],closeTrigger:[")"],parse:(e,n)=>Le(n,!1,!0)},{kind:"matchfix",openTrigger:["\\lbrack"],closeTrigger:["\\rparen"],parse:(e,n)=>Le(n,!1,!0)},{kind:"matchfix",openTrigger:["\\lbrack"],closeTrigger:[")"],parse:(e,n)=>Le(n,!1,!0)},{kind:"matchfix",openTrigger:["["],closeTrigger:["\\rparen"],parse:(e,n)=>Le(n,!1,!0)},{kind:"matchfix",openTrigger:["("],closeTrigger:["]"],parse:(e,n)=>Le(n,!0,!1)},{kind:"matchfix",openTrigger:["\\lparen"],closeTrigger:["\\rbrack"],parse:(e,n)=>Le(n,!0,!1)},{kind:"matchfix",openTrigger:["\\lparen"],closeTrigger:["]"],parse:(e,n)=>Le(n,!0,!1)},{kind:"matchfix",openTrigger:["("],closeTrigger:["\\rbrack"],parse:(e,n)=>Le(n,!0,!1)},{kind:"matchfix",openTrigger:["]"],closeTrigger:["["],parse:(e,n)=>Le(n,!0,!0)},{kind:"matchfix",openTrigger:["\\rbrack"],closeTrigger:["\\lbrack"],parse:(e,n)=>Le(n,!0,!0)},{name:"Multiple",serialize:iu},{name:"Union",latexTrigger:["\\cup"],kind:"infix",precedence:350},{name:"Divides",latexTrigger:["\\mid"],kind:"infix",precedence:160},{name:"Set",kind:"matchfix",openTrigger:"{",closeTrigger:"}",parse:(e,n)=>{if(Y(n))return"EmptySet";v(n)=="Delimiter"&&j(m(n,2))===","&&(n=m(n,1));let t=v(n);if(t==="Divides"){let i=m(n,1),r=m(n,2);if(i!==null&&r!==null)return["Set",i,["Condition",r]]}if(t==="Colon"){let i=m(n,1),r=m(n,2);if(i!==null&&r!==null){let s=v(i);return s!==null&&tu.has(s)?["Which",i,r]:["Set",i,["Condition",r]]}}if(t==="Sequence"){let i=S(n),r=i.filter(o=>v(o)==="Colon");if(r.length>0&&r.every(o=>{let a=m(o,1),u=a!==null?v(a):null;return u!==null&&tu.has(u)})){let o=[];for(let a=0;a<i.length;a++){let u=i[a];if(v(u)==="Colon"){let l=m(u,1),c=m(u,2);if(l===null||c===null)return["Set",...i];o.push(l,c)}else{if(a!==i.length-1)return["Set",...i];o.push("True",u)}}return["Which",...o]}return["Set",...i]}return["Set",n]},serialize:(e,n)=>{if(ne(n)===2&&v(m(n,2))==="Condition"){let t=m(n,2);return I(["\\lbrace",e.serialize(m(n,1)),"\\mid",e.serialize(m(t,1)),"\\rbrace"])}return I(["\\lbrace",S(n).map(t=>e.serialize(t)).join(", "),"\\rbrace"])}},{name:"SetMinus",latexTrigger:["\\setminus"],kind:"infix",precedence:650},{name:"SymmetricDifference",latexTrigger:["\\triangle"],kind:"infix",precedence:B},{latexTrigger:["\\ni"],kind:"infix",associativity:"none",precedence:160,parse:(e,n,t)=>{let i=e.parseExpression(t);return i===null?null:["Element",i,n]}},{name:"Element",latexTrigger:["\\in"],kind:"infix",precedence:240},{name:"NotElement",latexTrigger:["\\notin"],kind:"infix",precedence:240},{name:"NotSubset",latexTrigger:["\\nsubset"],kind:"infix",associativity:"none",precedence:240},{name:"NotSuperset",latexTrigger:["\\nsupset"],kind:"infix",associativity:"none",precedence:240},{name:"NotSubsetNotEqual",latexTrigger:["\\nsubseteq"],kind:"infix",associativity:"none",precedence:240},{name:"NotSupersetNotEqual",latexTrigger:["\\nsupseteq"],kind:"infix",associativity:"none",precedence:240},{name:"SquareSubset",latexTrigger:["\\sqsubset"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSubsetEqual",latexTrigger:["\\sqsubseteq"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSuperset",latexTrigger:["\\sqsupset"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSupersetEqual",latexTrigger:["\\sqsupseteq"],kind:"infix",associativity:"none",precedence:265},{name:"Subset",latexTrigger:["\\subset"],kind:"infix",associativity:"none",precedence:240},{latexTrigger:["\\subsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Subset"},{latexTrigger:["\\varsubsetneqq"],kind:"infix",associativity:"none",precedence:240,parse:"Subset"},{name:"SubsetEqual",latexTrigger:["\\subseteq"],kind:"infix",associativity:"none",precedence:240},{name:"Superset",latexTrigger:["\\supset"],kind:"infix",associativity:"none",precedence:240},{latexTrigger:["\\supsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Superset"},{latexTrigger:["\\varsupsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Superset"},{name:"SupersetEqual",latexTrigger:["\\supseteq"],kind:"infix",associativity:"none",precedence:240}];function iu(e,n){if(n===null)return"";let t=v(n);if(!t)return"";if(t==="Range")return I(["\\mathopen\\lbrack",e.serialize(m(n,1)),", ",e.serialize(m(n,2)),"\\mathclose\\rbrack"]);if(t==="Interval"){let r=m(n,1),s=m(n,2),o=!1,a=!1;return v(r)==="Open"&&(r=m(r,1),o=!0),v(s)==="Open"&&(s=m(s,1),a=!0),I([o?"\\lparen":"\\lbrack",e.serialize(r),", ",e.serialize(s),a?"\\rparen":"\\rbrack"])}let i=e.numericSetStyle(n,e.level);return""}function kn(e,n,t){e.indexOf("#1")<0&&e.indexOf("#2")<0&&(e=`#1 ${e} #2`);let i=e.split(/(#\d+)/).filter(r=>r.trim()!=="").map(r=>r.trim());return I(i.map(r=>{switch(r){case"#1":return n;case"#2":return t;default:return r}}))}function di(e,n){if(n==="none")return e;if(n==="0...360"){let t=e%360;return(t<0?t+360:t)||0}if(n==="-180...180"){let t=e%360;return t>180&&(t-=360),t<-180&&(t+=360),t||0}return e}function Vf(e){let n=e<0?-1:1,t=Math.abs(e),i=Math.floor(t),r=(t-i)*60,s=Math.floor(r),o=(r-s)*60,a=Math.round(o*1e3)/1e3,u=s,l=i;return a>=60&&(a=0,u++),u>=60&&(u=0,l++),{deg:n*l||0,min:n*u||0,sec:a===0?0:n*a}}function hi(e){let{deg:n,min:t,sec:i}=Vf(e),r=`${n}\xB0`;if(Math.abs(i)>.001){let s=i%1===0?i.toString():i.toFixed(2);r+=`${Math.abs(t)}'${Math.abs(Number(s))}"`}else Math.abs(t)>0?r+=`${Math.abs(t)}'`:r+=`0'0"`;return r}function qf(e){if(v(e)!=="Multiply")return[[],[]];let n=[],t=[];for(let i of S(e))if(v(i)==="Power"){let r=m(i,1),s=m(i,2);if(v(s)==="Negate"){let o=m(s,1);r&&o&&t.push(["Power",r,o])}else{let o=F(s)??NaN;o===-1?r&&t.push(r):o<0?r&&t.push(["Power",r,-o]):n.push(i)}}else if(v(i)==="Rational"&&ne(i)===2||v(i)==="Divide"){let r=m(i,1),s=m(i,2);F(r)!==1&&n.push(r),F(s)!==1&&t.push(s)}else{let r=Vn(i);r!==null?(r[0]!==1&&n.push(r[0]),t.push(r[1])):n.push(i)}return[n,t]}function Jf(e){let n=e.parseOptionalGroup(),t=e.parseGroup()??e.parseToken();if(Y(t)){let i=e.error("missing",e.index);return n!==null?["Root",i,Q(n)]:["Sqrt",i]}return n!==null?["Root",t,n]:["Sqrt",t]}function zf(e){if(typeof e=="number")return-e;if(typeof e=="string")return e.startsWith("-")?e.slice(1):e.startsWith("+")?"-"+e.slice(1):"-"+e;let n=e.num;return n.startsWith("-")?{num:n.slice(1)}:n.startsWith("+")?{num:"-"+n.slice(1)}:{num:"-"+n}}function bt(e,n,t,i){return t==null?"\\sqrt{}":(i=i??2,n==="solidus"?e.wrapShort(t)+"^{1/"+e.serialize(i)+"}":n==="quotient"?e.wrapShort(t)+"^{\\frac{1}{"+e.serialize(i)+"}}":F(i)===2?"\\sqrt{"+e.serialize(t)+"}":"\\sqrt["+e.serialize(i)+"]{"+e.serialize(t)+"}")}function Gf(e,n){e.level-=1;let t=v(n),i="",r=m(n,1);if(t==="Negate")i="-"+e.wrap(r,re+1);else if(t==="Subtract"){i=e.wrap(r,re);let s=m(n,2);if(s!==null){let o=e.wrap(s,re);o[0]==="-"?i+="+"+o.slice(1):o[0]==="+"?i+="-"+o.slice(1):i=i+"-"+o}}else if(t==="Add"){if(e.options.prettify&&ne(n)===2&&e.options.invisiblePlus!=="+"){let[a,u]=[m(n,1),m(n,2)],[l,c]=[a,u],f=F(l),p=Vn(c);if((f===null||p===null)&&([l,c]=[u,a],f=F(l),p=Vn(c)),f!==null&&p!==null&&isFinite(f)&&Number.isInteger(f)&&f>=0&&f<=1e3&&isFinite(p[0])&&isFinite(p[1])&&p[0]>0&&p[0]<=100&&p[1]<=100)return i=kn(e.options.invisiblePlus,e.serialize(l),e.serialize(c)),e.level+=1,i}if(e.options.prettify&&ne(n)===2){let[a,u]=yt(r),[l,c]=yt(m(n,2));if(u<0&&c>0)return i=e.wrap(l,re)+"-"+e.wrap(a,re),e.level+=1,i}i=e.serialize(r);let s=ne(n)+1,o=S(n);for(let a=2;a<s;a++)if(r=o[a-1],e.options.prettify){let[u,l]=yt(r),c=e.wrap(u,re);l>0?c.startsWith("+")||c.startsWith("-")?i+=c:i+="+"+c:c.startsWith("+")?i+="-"+c.slice(1):c.startsWith("-")?i+="+"+c.slice(1):i+="-"+c}else{let u=e.wrap(r,re);u[0]==="-"||u[0]==="+"?i+=u:i+="+"+u}}return e.level+=1,i}function fu(e,n){if(n===null)return"";e.level-=1;let t="";if(e.options.prettify===!0){let[u,l]=qf(n);l.length>0&&(l.length===1&&l[0]===1?u.length===0?t="1":u.length===1?t=e.serialize(u[0]):t=fu(e,["Multiply",...u]):t=e.serialize(["Divide",u.length===1?u[0]:["Multiply",...u],l.length===1?l[0]:["Multiply",...l]]))}if(t)return e.level+=1,t;let i=!1,r=null,s=ne(n)+1,o=S(n);e.options.prettify===!0&&o.length===2&&Tn(o[1])&&!Tn(o[0])&&(o=[o[1],o[0]]);let a=!1;for(let u=1;u<s;u++){if(r=o[u-1],r===null)continue;let l;if(Tn(r)){l=e.serialize(r),l==="-1"&&!t?(t="",i=!i):(l[0]==="-"&&(l=l.slice(1),i=!i),t?t=kn(e.options.multiply,t,l):t=l),a=!0;continue}if(v(r)==="Power"){let c=Vn(m(r,2));if(c!=null){let[f,p]=c;if(f===1&&p!==null){t+=bt(e,e.rootStyle(r,e.level),m(r,1),p),a=!1;continue}}}if(v(r)==="Power"&&!isNaN(F(m(r,1))??NaN)){l=e.serialize(r),t?t=kn(e.options.multiply,t,l):t=l,a=!0;continue}if(v(r)==="Negate"&&(r=m(r,1),i=!i),l=e.wrap(r,Ne),!t)t=l;else{let c=v(r);a&&(c==="Divide"||c==="Rational")?t=kn(e.options.multiply,t,l):/^\d/.test(l)?t=kn(e.options.multiply,t,l):e.options.invisibleMultiply?t=kn(e.options.invisibleMultiply,t,l):t=I([t,l])}a=!1}return e.level+=1,i?"-"+t:t}function gi(e){let n=e.parseGroup(),t=null;if(n===null?(n=e.parseToken(),t=e.parseToken(),n=Q(n),t=Q(t)):(n=Y(n)?e.error("missing",e.index):n,t=e.parseGroup(),t=Y(t)?e.error("missing",e.index):t),v(n)==="PartialDerivative"&&(v(t)==="PartialDerivative"||v(t)==="Multiply"&&v(m(t,1))==="PartialDerivative")){let s=m(n,3)??null,o=m(n,1);o==null&&(o=Q(e.parseExpression()));let a=[];if(v(t)==="Multiply"){for(let u of S(t))if(v(u)==="PartialDerivative"){let l=m(u,2);l&&a.push(l)}}else{let u=m(t,2);u&&a.push(u)}return a.length>1&&(a=["List",...a]),["PartialDerivative",o,...a,s===null?1:s]}let i=w(n);if(i==="d"||i==="d_upright"||i==="differentialD"){let s=[],o=a=>{if(!a)return;let u=w(a);if(u&&u!=="d"&&u!=="d_upright"&&u!=="differentialD"){s.push(a);return}let l=v(a);if(l==="Sequence"||l==="Multiply"||l==="InvisibleOperator")for(let c of S(a))o(c)};if(o(t),s.length===0){let a=w(t);a&&a.length>1&&a[0]==="d"&&s.push(a.slice(1))}if(s.length>0)return["D",Q(e.parseExpression()),...s]}return["Divide",n,t]}function su(e,n){if(n===null)return"";let t=Q(m(n,1)),i=Q(m(n,2)),r=e.options.prettify?e.fractionStyle(n,e.level):"quotient";if(r==="inline-solidus"||r==="nice-solidus"){let u=e.wrapShort(t),l=e.wrapShort(i);return r==="inline-solidus"?`${u}/${l}`:`{}^{${u}}\\!\\!/\\!{}_{${l}}`}else{if(r==="reciprocal")return F(t)===1?e.wrap(i)+"^{-1}":e.wrap(t)+e.wrap(i)+"^{-1}";if(r==="factor")return F(i)===1?e.wrap(t):"\\frac{1}{"+e.serialize(i)+"}"+e.wrapString(e.serialize(t),e.groupStyle(n,1))}let s="\\frac";r==="block-quotient"?s="\\dfrac":r==="inline-quotient"&&(s="\\tfrac");let o=e.serialize(t),a=e.serialize(i);return`${s}{${o}}{${a}}`}function Ar(e,n){if(!n)return"";let t=v(n),i=Q(m(n,1));if(t==="Sqrt")return bt(e,e.rootStyle(n,e.level-1),i,2);let r=Q(m(n,2));if(t==="Root")return bt(e,e.rootStyle(n,e.level-1),i,r);if(e.options.prettify){let o=F(r)??1;if(o===-1)return e.serialize(["Divide","1",i]);if(o<0)return e.serialize(["Divide","1",["Power",i,-o]]);if(v(r)==="Divide"||v(r)==="Rational"){let a=F(m(r,1)),u=F(m(r,2));if(a===1){let l=e.rootStyle(n,e.level);return bt(e,l,i,m(r,2))}if(a===-1)return u===2?e.serialize(["Divide","1",["Sqrt",i]]):e.serialize(["Divide","1",["Root",i,m(r,2)??oi]]);if(u===2)return`${e.serialize(["Sqrt",i])}^{${e.serialize(m(r,1))}}`}else if(v(r)==="Power"&&F(m(r,2))===-1){let a=e.rootStyle(n,e.level);return bt(e,a,i,m(r,1))}}return En("^",(o=>o.startsWith("-")?e.wrapString(o,"normal"):o)(e.wrapShort(i)),e.serialize(r))}function gt(e,n){e.skipSpace();let t=e.index,i=e.parseNumber(),r=null,s=null;if(i!==null&&(e.match("'")||e.match("\\prime"))){r=F(i),e.skipSpace();let u=e.index,l=e.parseNumber();l!==null&&(e.match('"')||e.match("\\doubleprime"))?s=F(l):e.index=u}else return e.index=t,["Degrees",n];let o=F(n);if(o!==null&&r!==null){let u=o+r/60;return s!==null&&(u+=s/3600),["Degrees",u]}let a=[["Quantity",n,"deg"]];return a.push(["Quantity",i,"arcmin"]),s!==null&&a.push(["Quantity",s,"arcsec"]),["Add",...a]}var pu=[{name:"CatalanConstant",symbolTrigger:"G"},{name:"GoldenRatio",latexTrigger:"\\varphi"},{name:"EulerGamma",latexTrigger:"\\gamma"},{name:"Degrees",latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(e,n)=>gt(e,n),serialize:(e,n)=>{let t=e.options,i=m(n,1);if(t.dmsFormat||t.angleNormalization&&t.angleNormalization!=="none"){let r=F(i);if(r!==null){let s=r;return t.angleNormalization&&t.angleNormalization!=="none"&&(s=di(s,t.angleNormalization)),t.dmsFormat?hi(s):`${s}\xB0`}}return I([e.serialize(i),"\\degree"])}},{latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(e,n)=>gt(e,n)},{latexTrigger:["^","<{>","\\circ","<}>"],kind:"postfix",parse:(e,n)=>gt(e,n)},{latexTrigger:["^","\\circ"],kind:"postfix",parse:(e,n)=>gt(e,n)},{latexTrigger:["\xB0"],kind:"postfix",precedence:880,parse:(e,n)=>gt(e,n)},{latexTrigger:["\\ang"],parse:e=>{let n=e.parseGroup();return n===null?["Degrees"]:["Degrees",n]}},{name:"DMS",serialize:(e,n)=>{let t=F(m(n,1)),i=F(m(n,2)),r=F(m(n,3));if(t!==null){let o=i??0,a=r??0,u=`${t}\xB0`;return(o!==0||a!==0)&&(u+=`${o}'`),a!==0&&(u+=`${a}"`),u}let s=[];for(let o of[1,2,3]){let a=m(n,o);a!==null&&s.push(e.serialize(a))}return`\\operatorname{DMS}(${s.join(", ")})`}},{latexTrigger:["\\infty"],parse:"PositiveInfinity"},{latexTrigger:["\\infin"],parse:"PositiveInfinity"},{name:"PositiveInfinity",serialize:e=>e.options.positiveInfinity},{name:"NegativeInfinity",serialize:e=>e.options.negativeInfinity},{name:"ComplexInfinity",latexTrigger:["\\tilde","\\infty"],serialize:"\\tilde\\infty"},{latexTrigger:["\\tilde","<{>","\\infty","<}>"],parse:"ComplexInfinity"},{name:"Pi",kind:"symbol",latexTrigger:["\\pi"]},{latexTrigger:["\u03C0"],parse:"Pi"},{name:"ExponentialE",latexTrigger:["\\exponentialE"],parse:"ExponentialE",serialize:"\\exponentialE"},{latexTrigger:"\\operatorname{e}",parse:"ExponentialE"},{latexTrigger:"\\mathrm{e}",parse:"ExponentialE"},{kind:"function",symbolTrigger:"exp",parse:e=>{let n=e.parseArguments("implicit");return n===null?"Exp":["Exp",...n]}},{latexTrigger:"\\exp",parse:e=>{let n=e.parseArguments("implicit");return n===null?"Exp":["Exp",...n]}},{name:"ImaginaryUnit",latexTrigger:["\\imaginaryI"]},{latexTrigger:"\\operatorname{i}",parse:"ImaginaryUnit"},{latexTrigger:"\\mathrm{i}",parse:"ImaginaryUnit"},{name:"Abs",kind:"matchfix",openTrigger:"|",closeTrigger:"|",parse:(e,n)=>Y(n)?null:["Abs",n]},{kind:"matchfix",openTrigger:["\\vert"],closeTrigger:["\\vert"],parse:(e,n)=>Y(n)?null:["Abs",n]},{symbolTrigger:"abs",kind:"function",parse:"Abs"},{name:"Add",latexTrigger:["+"],kind:"infix",associativity:"any",precedence:re,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:re});if(i===null)return null;if(v(i)==="Negate"){let r=m(i,1);if(Tn(r))return qn("Add",n,zf(r))}return qn("Add",n,i)},serialize:Gf},{kind:"prefix",latexTrigger:["+"],precedence:re,parse:(e,n)=>e.parseExpression({...n,minPrec:400})},{name:"Ceil",kind:"matchfix",openTrigger:"\\lceil",closeTrigger:"\\rceil",parse:(e,n)=>Y(n)?null:["Ceil",n]},{kind:"matchfix",openTrigger:["\u2308"],closeTrigger:["\u2309"],parse:(e,n)=>Y(n)?null:["Ceil",n]},{symbolTrigger:"ceil",kind:"function",parse:"Ceil"},{name:"Chop",symbolTrigger:"chop",kind:"function",parse:"Chop"},{name:"Complex",precedence:re-1,serialize:(e,n)=>{let t=e.serialize(m(n,1)),i=F(m(n,2));if(i===0)return t;let r=i===1?"\\imaginaryI":i===-1?"-\\imaginaryI":I([e.serialize(m(n,2)),"\\imaginaryI"]);return F(m(n,1))===0?r:i!==null&&i<0?I([t,r]):I([t,"+",r])}},{name:"Divide",latexTrigger:"\\frac",precedence:Me,parse:gi,serialize:su},{latexTrigger:"\\dfrac",precedence:Me,parse:gi},{latexTrigger:"\\tfrac",precedence:Me,parse:gi},{latexTrigger:"\\cfrac",precedence:Me,parse:gi},{kind:"infix",latexTrigger:"\\over",associativity:"none",precedence:Me,parse:"Divide"},{latexTrigger:["\\/"],kind:"infix",associativity:"left",precedence:Me,parse:"Divide"},{latexTrigger:["/"],kind:"infix",associativity:"left",precedence:Me,parse:"Divide"},{latexTrigger:["\\div"],kind:"infix",associativity:"left",precedence:Me,parse:"Divide"},{name:"Exp",serialize:(e,n)=>{let t=m(n,1);return w(t)||F(t)!==null?I(["\\exponentialE^{",e.serialize(t),"}"]):I(["\\exp",e.wrap(Q(t))])}},{name:"Factorial",latexTrigger:["!"],kind:"postfix",precedence:br},{name:"Factorial2",latexTrigger:["!","!"],kind:"postfix",precedence:br},{name:"Floor",kind:"matchfix",openTrigger:"\\lfloor",closeTrigger:"\\rfloor",parse:(e,n)=>Y(n)?null:["Floor",n]},{kind:"matchfix",openTrigger:["\u230A"],closeTrigger:["\u230B"],parse:(e,n)=>Y(n)?null:["Floor",n]},{symbolTrigger:"floor",kind:"function",parse:"Floor"},{latexTrigger:["\\Gamma"],parse:"Gamma"},{latexTrigger:["\\zeta"],kind:"function",parse:"Zeta"},{latexTrigger:["\\Beta"],kind:"function",parse:"Beta"},{name:"LambertW",latexTrigger:["\\operatorname{W}"],kind:"function",serialize:(e,n)=>"\\operatorname{W}"+e.wrapArguments(n)},{name:"BesselJ",latexTrigger:["\\operatorname{J}"],kind:"function",serialize:(e,n)=>{let t=m(n,1),i=m(n,2);return t!==null&&i!==null?"\\operatorname{J}_{"+e.serialize(t)+"}"+e.wrapArguments(["BesselJ",i]):"\\operatorname{J}"+e.wrapArguments(n)}},{name:"BesselY",latexTrigger:["\\operatorname{Y}"],kind:"function",serialize:(e,n)=>{let t=m(n,1),i=m(n,2);return t!==null&&i!==null?"\\operatorname{Y}_{"+e.serialize(t)+"}"+e.wrapArguments(["BesselY",i]):"\\operatorname{Y}"+e.wrapArguments(n)}},{name:"BesselI",latexTrigger:["\\operatorname{I}"],kind:"function",serialize:(e,n)=>{let t=m(n,1),i=m(n,2);return t!==null&&i!==null?"\\operatorname{I}_{"+e.serialize(t)+"}"+e.wrapArguments(["BesselI",i]):"\\operatorname{I}"+e.wrapArguments(n)}},{name:"BesselK",latexTrigger:["\\operatorname{K}"],kind:"function",serialize:(e,n)=>{let t=m(n,1),i=m(n,2);return t!==null&&i!==null?"\\operatorname{K}_{"+e.serialize(t)+"}"+e.wrapArguments(["BesselK",i]):"\\operatorname{K}"+e.wrapArguments(n)}},{name:"AiryAi",latexTrigger:["\\operatorname{Ai}"],kind:"function",serialize:(e,n)=>"\\operatorname{Ai}"+e.wrapArguments(n)},{name:"AiryBi",latexTrigger:["\\operatorname{Bi}"],kind:"function",serialize:(e,n)=>"\\operatorname{Bi}"+e.wrapArguments(n)},{name:"GCD",latexTrigger:["\\gcd"],kind:"function"},{symbolTrigger:"gcd",kind:"function",parse:"GCD"},{symbolTrigger:"GCD",kind:"function",parse:"GCD"},{name:"Half",serialize:"\\frac12"},{name:"Lg",latexTrigger:["\\lg"],serialize:(e,n)=>"\\log_{10}"+e.wrapArguments(n),parse:e=>{let n=e.parseArguments("implicit");return n===null?"Lg":["Log",...n,10]}},{name:"Lb",latexTrigger:"\\lb",parse:e=>{let n=e.parseArguments("implicit");return n===null?"Log":["Log",n[0],2]}},{name:"Ln",latexTrigger:["\\ln"],parse:e=>cu("Ln",e),serialize:(e,n)=>"\\ln"+e.wrapArguments(n)},{name:"Log",latexTrigger:["\\log"],parse:e=>cu("Log",e),serialize:(e,n)=>{let[t,i]=S(n);return i?I(["\\log_{",e.serialize(i),"}",e.wrap(t)]):"\\log"+e.wrapArguments(n)}},{name:"LCM",latexTrigger:["\\lcm"],kind:"function"},{symbolTrigger:"lcm",kind:"function",parse:"LCM"},{symbolTrigger:"LCM",kind:"function",parse:"LCM"},{symbolTrigger:"max",kind:"function",parse:"Max",arguments:"implicit"},{symbolTrigger:"min",kind:"function",parse:"Min",arguments:"implicit"},{name:"Max",latexTrigger:"\\max",kind:"function",arguments:"implicit"},{name:"Min",latexTrigger:"\\min",kind:"function",arguments:"implicit"},{name:"Supremum",latexTrigger:"\\sup",kind:"function",arguments:"implicit"},{name:"Infimum",latexTrigger:"\\inf",kind:"function",arguments:"implicit"},{name:"Limit",latexTrigger:"\\lim",kind:"expression",parse:e=>{if(!e.match("_"))return null;let n=e.parseGroup();if(v(n)!=="To")return null;let t=e.parseExpression({minPrec:Ne});return t?["Limit",["Function",t,m(n,1)],m(n,2)]:null},serialize:(e,n)=>{let t=m(n,1),i=m(t,2),r=m(n,2);return I(["\\lim_{",e.serialize(i),"\\to",e.serialize(r),"}",e.serialize(m(t,1))])}},{name:"MinusPlus",latexTrigger:["\\mp"],kind:"infix",associativity:"any",precedence:We},{name:"Multiply",latexTrigger:["\\times"],kind:"infix",associativity:"any",precedence:Ne,serialize:fu},{latexTrigger:["\\cdot"],kind:"infix",associativity:"any",precedence:Ne,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:Ne+2});return i===null?null:qn("Multiply",n,i)}},{latexTrigger:["*"],kind:"infix",associativity:"any",precedence:Ne,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:Ne+2});return i===null?["Multiply",n,oi]:qn("Multiply",n,i)}},{name:"Mod",latexTrigger:"\\bmod",kind:"infix",precedence:Me,serialize:(e,n)=>{if(ne(n)!==2)return"";let t=e.serialize(m(n,1)),i=e.serialize(m(n,2));return I([t,"\\bmod",i])}},{latexTrigger:"\\mod",kind:"infix",precedence:Me,parse:"Mod"},{latexTrigger:"\\operatorname{mod}",parse:"Mod"},{latexTrigger:"\\pmod",kind:"prefix",precedence:B,parse:e=>{let n=e.parseGroup()??e.parseToken();return["Mod",Q(n)]}},{name:"Congruent",serialize:(e,n)=>{let t=e.serialize(m(n,1)),i=e.serialize(m(n,2));if(m(n,3)===null)return I([t,"\\equiv",i]);let r=e.serialize(m(n,3));return I([t,"\\equiv",i,"\\pmod{",r,"}"])}},{name:"Negate",latexTrigger:["-"],kind:"prefix",precedence:mt+1,parse:(e,n)=>{e.skipSpace();let t=e.parseExpression({...n,minPrec:mt+3});return t===null?null:["Negate",t]}},{kind:"matchfix",openTrigger:"||",closeTrigger:"||",parse:(e,n)=>Y(n)?null:["Norm",n]},{name:"Norm",kind:"matchfix",openTrigger:["\\left","\\Vert"],closeTrigger:["\\right","\\Vert"],parse:(e,n)=>Y(n)?null:["Norm",n],serialize:(e,n)=>{let t=m(n,1);if(v(t)==="Matrix"){let i=m(t,1),r=m(t,2),s=r?["Matrix",i,{str:"\u2016\u2016"},r]:["Matrix",i,{str:"\u2016\u2016"}];return e.serialize(s)}return`\\left\\Vert ${e.serialize(t)}\\right\\Vert`}},{name:"PlusMinus",latexTrigger:["\\pm"],kind:"infix",associativity:"any",precedence:We,serialize:(e,n)=>{let t=m(n,1);if(t===null)return"\\pm";if(ne(n)===1)return I(["\\pm",e.serialize(t)]);let i=m(n,2);return I([e.serialize(t),"\\pm",e.serialize(i)])}},{latexTrigger:["\\pm"],kind:"prefix",precedence:We,parse:(e,n)=>{let t=e.parseExpression({...n,minPrec:400});return["PlusMinus",0,Q(t)]}},{latexTrigger:["\\plusmn"],kind:"infix",associativity:"any",precedence:We,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:400});return["PlusMinus",n,Q(i)]}},{latexTrigger:["\\plusmn"],kind:"prefix",precedence:We,parse:(e,n)=>{let t=e.parseExpression({...n,minPrec:400});return["PlusMinus",Q(t)]}},{name:"Power",latexTrigger:["^"],kind:"infix",serialize:Ar},{latexTrigger:"\\prod",precedence:Ne,name:"Product",parse:au("Product","Multiply",Ne),serialize:lu("\\prod")},{latexTrigger:["*","*"],kind:"infix",associativity:"right",precedence:mt,parse:(e,n,t)=>{if(e.options.strict!==!1)return null;let i=e.parseExpression({...t,minPrec:mt});return i===null?null:["Power",n,i]}},{name:"Rational",precedence:Me,serialize:(e,n)=>n&&ne(n)===1?"\\operatorname{Rational}"+e.wrapArguments(n):su(e,n)},{name:"Reduce",serialize:(e,n)=>{let t=m(n,1);if(!t)return"";let i=m(n,2);return w(i)==="Add"?`\\sum ${e.serialize(t)}`:w(i)==="Multiply"?`\\prod ${e.serialize(t)}`:`\\operatorname{Reduce}\\left(${e.serialize(t)}, ${e.serialize(m(n,2))}\\right)`}},{name:"Root",serialize:Ar},{name:"Round",symbolTrigger:"round",kind:"function"},{name:"Square",precedence:720,serialize:(e,n)=>{let t=e.wrapShort(m(n,1));return(t.startsWith("-")?e.wrapString(t,"normal"):t)+"^2"}},{latexTrigger:["\\sum"],precedence:re,name:"Sum",parse:au("Sum","Add",Ne),serialize:lu("\\sum")},{name:"Heaviside",symbolTrigger:"Heaviside",kind:"function"},{name:"Sign",symbolTrigger:"sgn",kind:"function"},{name:"Sqrt",latexTrigger:["\\sqrt"],parse:Jf,serialize:Ar},{name:"Subtract",latexTrigger:["-"],kind:"infix",associativity:"left",precedence:re+2,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:re+3});return i===null?null:["Subtract",n,i]},serialize:(e,n)=>{let t=e.wrap(m(n,1),re+2),i=e.wrap(m(n,2),re+3);return I([t,"-",i])}},{name:"Distance",latexTrigger:["\\operatorname{distance}"],kind:"function",serialize:(e,n)=>"\\operatorname{distance}"+e.wrapArguments(n)}];function jf(e,n){if(e!==null){if(w(e))return{index:w(e)??"Nothing",upper:n};if(v(e)==="GreaterEqual"){let t=w(m(e,1))??"Nothing",i=m(e,2)??1;return{index:t,lower:i,upper:n}}if(v(e)==="Equal"){let t=w(m(e,1))??"Nothing",i=m(e,2);if(v(i)==="Range"){let s=m(i,1)??1,o=m(i,2)??void 0;return{index:t,lower:s,upper:o}}return{index:t,lower:i??1,upper:n}}if(v(e)==="Element")return{index:w(m(e,1))??"Nothing",element:e}}}function Hf(e){let n=v(e);return n?new Set(["Less","LessEqual","Greater","GreaterEqual","NotEqual","And","Or","Not"]).has(n):!1}function ou(e){if(e===null)return[];let n=_n(e);if(n)return[...n];if(v(e)==="Tuple"){let t=S(e);return t?[...t]:[e]}return[e]}function Uf(e,n){Y(e)&&(e=null),Y(n)&&(n=null);let t=ou(e),i=ou(n),r=[],s=0;for(;s<t.length;){let o=t[s],a=jf(o,i[s]);if(a){if(a.element&&s+1<t.length){let u=t[s+1];if(Hf(u)&&v(u)!=="Element"&&v(u)!=="Equal"){let l=a.element;if(Array.isArray(l)&&l.length>=3){let c=[l[0],...l.slice(1),u];a.element=c}s++}}r.push(a)}s++}return r}function au(e,n,t){return i=>{i.skipSpace(),i.pushSymbolTable();let r=null,s=null;for(;!(s&&r)&&(i.peek==="_"||i.peek==="^");)i.match("_")?s=i.parseGroup()??i.parseToken():i.match("^")&&(r=i.parseGroup()??i.parseToken()),i.skipSpace();if(!r&&!s){let l=i.parseExpression({minPrec:t});return i.popSymbolTable(),l?["Reduce",l,n]:null}let o=Uf(s,r),a=i.parseExpression({minPrec:t});if(i.popSymbolTable(),a===null)return[e];let u=[];for(let l of o){if(l.element){u.push(l.element);continue}let c=l.lower,f=l.upper,p=l.index??"Nothing";f!=null?u.push(["Tuple",p,c??1,f]):c!=null?u.push(["Tuple",p,c]):u.push(["Tuple",p])}return[e,a,...u]}}var Zf=new Set(["Tuple","Triple","Pair","Single","Limits","Element"]);function uu(e){return e==null||w(e)==="Nothing"?null:e}function Yf(e){let n=[],t=S(e);if(t.length<=1)return n;for(let i of t.slice(1)){let r=v(i);if(r&&Zf.has(r)){n.push(i);continue}break}return n}function Wf(e,n){if(v(n)==="Element"){let l=e.serialize(m(n,1)),c=e.serialize(m(n,2));return{sub:`${l}\\in ${c}`}}let t=m(n,1);t!==null&&v(t)==="Hold"&&(t=m(t,1));let i=uu(m(n,2)),r=uu(m(n,3)),s={},o=t?w(t):null,a=o!==null&&o!=="Nothing",u=a&&t?e.serialize(t):void 0;return a&&i!==null&&u?s.sub=`${u}=${e.serialize(i)}`:a&&u?s.sub=u:i!==null&&(s.sub=e.serialize(i)),r!==null&&(s.sup=e.serialize(r)),s}function lu(e){return(n,t)=>{let i=m(t,1);if(!i)return e;let r=Yf(t),s=e;if(r.length>0){let o=[],a=[];for(let u of r){let l=Wf(n,u);l.sub&&o.push(l.sub),l.sup&&a.push(l.sup)}o.length>0&&(s=En("_",s,o.join(", "))),a.length>0&&(s=En("^",s,a.join(", ")))}return I([s,n.serialize(i)])}}function cu(e,n){let t=null;n.match("_")&&(t=n.parseGroup()??n.parseToken());let i=n.parseArguments("implicit");return i===null&&t===null?[e]:i===null?[e,t]:t===null?[e,...i]:t===10?["Log",i[0]]:t===2?["Lb",...i]:["Log",i[0],t]}function yt(e){let n=1,t=e;do{e=t;let i=v(e);if(i==="Negate")n*=-1,t=m(e,1);else if(i==="Multiply"){let[r,s]=yt(m(e,1));s<0&&(n*=-1,r===1?t=["Multiply",...S(e).slice(1)]:t=["Multiply",r,...S(e).slice(1)])}else if(i==="Divide"||i==="Rational"){let[r,s]=yt(m(e,1));s<0&&(n*=-1,t=[i,r,m(e,2)])}else{let r=F(e);r!==null&&r<0&&(n*=-1,t=-r)}}while(t!==e);return[e,n]}var mu=[{name:"Real",kind:"function",latexTrigger:["\\Re"],arguments:"implicit"},{name:"Imaginary",kind:"function",latexTrigger:["\\Im"],arguments:"implicit"},{name:"Argument",kind:"function",latexTrigger:["\\arg"],arguments:"implicit"},{name:"Conjugate",latexTrigger:["^","\\star"],kind:"postfix"}];function C(e){return(n,t)=>{let i={"\\arcsin":"Arcsin","\\arccos":"Arccos","\\arctan":"Arctan","\\arctg":"Arctan","\\arcctg":"Arccot","\\arcsec":"Arcsec","\\arccsc":"Arccsc","\\arsinh":"Arsinh","\\arcsinh":"Arsinh","\\arcosh":"Arcosh","\\arccosh":"Arcosh","\\artanh":"Artanh","\\arctanh":"Artanh","\\arsech":"Arsech","\\arcsech":"Arsech","\\arcsch":"Arcsch","\\arccsch":"Arcsch","\\arcoth":"Arcoth","\\arccoth":"Arcoth","\\ch":"Cosh","\\cos":"Cos","\\cosh":"Cosh","\\cosec":"Csc","\\cot":"Cot","\\cotg":"Cot","\\ctg":"Cot","\\csc":"Csc","\\csch":"Csch","\\coth":"Coth","\\cth":"Coth","\\sec":"Sec","\\sech":"Sech","\\sin":"Sin","\\sinh":"Sinh","\\sh":"Sinh","\\tan":"Tan","\\tg":"Tan","\\tanh":"Tanh","\\th":"Tanh"},r=i[e??""]??e??"";if(n.atTerminator(t))return r;let s=r;do{let f=n.parsePostfixOperator(s,t);if(f===null)break;s=f}while(!0);n.skipSpace();let o=null;n.match("^")&&(o=n.parseGroup()??n.parseToken()),n.skipSpace();let a=n.parseArguments("implicit",{minPrec:Ne,condition:f=>i[f.peek]!==void 0||(t?.condition?.(f)??!1)}),l=a?.length===2&&(s==="Arctan"||Array.isArray(s)&&s[0]==="InverseFunction"&&s[1]==="Tan")?"Arctan2":s,c=a===null?s:typeof l=="string"?[l,...a]:["Apply",l,...a];return o===null?c:["Power",c,o]}}var du=[{name:"Arcsin",latexTrigger:["\\arcsin"],parse:C("Arcsin")},{name:"Arccos",latexTrigger:["\\arccos"],parse:C("Arccos")},{name:"Arctan",latexTrigger:["\\arctan"],parse:C("Arctan")},{latexTrigger:["\\arctg"],parse:C("Arctan")},{symbolTrigger:"arctg",parse:C("Arctan")},{name:"Arccot",symbolTrigger:"arcctg",parse:C("Arccot")},{latexTrigger:["\\arcctg"],parse:C("Arccot")},{name:"Arcoth",symbolTrigger:"arcoth",parse:C("Arcoth")},{symbolTrigger:"arccoth",parse:C("Arcoth")},{latexTrigger:["\\arcoth"],parse:C("Arcoth")},{latexTrigger:["\\arccoth"],parse:C("Arcoth")},{name:"Arcsec",symbolTrigger:"arcsec",parse:C("Arcsec")},{latexTrigger:["\\arcsec"],parse:C("Arcsec")},{name:"Arccsc",symbolTrigger:"arccsc",parse:C("Arccsc")},{latexTrigger:["\\arccsc"],parse:C("Arccsc")},{name:"Arsinh",symbolTrigger:"arsinh",parse:C("Arsinh")},{symbolTrigger:"arcsinh",parse:C("Arsinh")},{latexTrigger:["\\arsinh"],parse:C("Arsinh")},{latexTrigger:["\\arcsinh"],parse:C("Arsinh")},{name:"Arcosh",symbolTrigger:"arcosh",parse:C("Arcosh")},{symbolTrigger:"arccosh",parse:C("Arcosh")},{latexTrigger:"\\arcosh",parse:C("Arcosh")},{latexTrigger:"\\arccosh",parse:C("Arcosh")},{name:"Artanh",symbolTrigger:"artanh",parse:C("Artanh")},{symbolTrigger:"arctanh",parse:C("Artanh")},{latexTrigger:"\\artanh",parse:C("Artanh")},{latexTrigger:["\\arctanh"],parse:C("Artanh")},{name:"Arsech",symbolTrigger:"arsech",parse:C("Arsech")},{symbolTrigger:"arcsech",parse:C("Arsech")},{latexTrigger:["\\arsech"],parse:C("Arsech")},{latexTrigger:["\\arcsech"],parse:C("Arsech")},{name:"Arcsch",symbolTrigger:"arcsch",parse:C("Arcsch")},{symbolTrigger:"arccsch",parse:C("Arcsch")},{latexTrigger:["\\arcsch"],parse:C("Arcsch")},{latexTrigger:["\\arccsch"],parse:C("Arcsch")},{name:"Cosec",symbolTrigger:"cosec",parse:C("Cosec")},{latexTrigger:["\\cosec"],parse:C("Cosec")},{name:"Cosh",latexTrigger:["\\cosh"],parse:C("Cosh")},{latexTrigger:["\\ch"],parse:C("Cosh")},{name:"Cot",latexTrigger:["\\cot"],parse:C("Cot")},{latexTrigger:["\\cotg"],parse:C("Cot")},{latexTrigger:["\\ctg"],parse:C("Cot")},{name:"Csc",latexTrigger:["\\csc"],parse:C("Csc")},{name:"Csch",latexTrigger:["\\csch"],parse:C("Csch")},{name:"Coth",latexTrigger:["\\coth"],parse:C("Coth")},{latexTrigger:["\\cth"],parse:C("Coth")},{symbolTrigger:"cth",parse:C("Coth")},{latexTrigger:["\\coth"],parse:C("Coth")},{name:"Sec",latexTrigger:["\\sec"],parse:C("Sec")},{name:"Sech",symbolTrigger:"sech",parse:C("Sech")},{latexTrigger:["\\sech"],parse:C("Sech")},{name:"Sinh",latexTrigger:["\\sinh"],parse:C("Sinh")},{latexTrigger:["\\sh"],parse:C("Sinh")},{name:"Tan",latexTrigger:["\\tan"],parse:C("Tan")},{latexTrigger:["\\tg"],parse:C("Tan")},{name:"Tanh",latexTrigger:["\\tanh"],parse:C("Tanh")},{latexTrigger:["\\th"],parse:C("Tanh")},{name:"Cos",latexTrigger:["\\cos"],parse:C("Cos")},{name:"Sin",latexTrigger:["\\sin"],parse:C("Sin")},{name:"Sinc",symbolTrigger:"sinc",kind:"function"},{name:"FresnelS",symbolTrigger:"FresnelS",kind:"function"},{name:"FresnelC",symbolTrigger:"FresnelC",kind:"function"}];function Jn(e,n=1){return t=>{t.skipVisualSpace(),t.match("\\limits"),t.skipSpace();let i=null,r=null;for(;!(r!==null&&i!==null)&&(t.peek==="_"||t.peek==="^");)t.match("_")?r=t.parseGroup()??t.parseToken():t.match("^")&&(i=t.parseGroup()??t.parseToken()),t.skipSpace();Y(r)&&(r=null),Y(i)&&(i=null);let s=[r??"Nothing"],o=[i??"Nothing"];t.skipVisualSpace();let[a,u]=Xf(t,n);if(a&&u.length===0){if(v(a)==="Add"||v(a)==="Subtract"){let l=[],c=[];for(let f of S(a))if(u)c.push(f);else{let p;[p,u]=Ke(f),l.push(p??f)}if(u!==null&&c.length>0)return["Add",hu(e,["Add",...l],{indexes:u,subs:s,sups:o})??"Nothing",...c]}else if(v(a)==="Divide"){let l;[l,u]=Ke(m(a,1)),l!==null&&u!==null&&(a=["Divide",l,m(a,2)])}}return hu(e,a,{indexes:u,subs:s,sups:o})}}function hu(e,n,t){if(!n)return null;if(t.sups.length===0&&t.subs.length===0)return[e,n,...t.indexes];let i=t.indexes.length===0?v(n)==="Function"?S(n).slice(1):[]:t.indexes,r=Math.max(t.sups.length,t.subs.length,i.length);if(i.length===0)for(let o=0;o<r;o++)i.push("Nothing");else if(i.length!==r)for(let o=i.length;o<r;o++)i.push(["Error","'missing'"]);if(t.subs.length!==r)for(let o=t.subs.length;o<r;o++)t.subs.push("Nothing");if(t.sups.length!==r)for(let o=t.sups.length;o<r;o++)t.sups.push("Nothing");let s=i.map((o,a)=>{let u=t.sups[a],l=t.subs[a];return l==="Nothing"&&u==="Nothing"?o:["Tuple",o,l,u]});return[e,n,...s]}function Xf(e,n=1){let t=!1,i=e.parseExpression({minPrec:266,condition:()=>{let r=e.index;return t=yu(e),e.index=r,t}});return i!==null&&!t?Ke(i):[i,Qf(e,n)]}function Qf(e,n){let t=[];for(;t.length<n&&yu(e);){e.skipVisualSpace();let i=w(e.parseSymbol());if(i===null)return t;t.push(i)}return t}function Ke(e){let n=v(e),t=m(e,1);if(!t)return[e,[]];if(n==="Sequence"&&ne(e)===1)return Ke(t);if(n==="Multiply"||n==="InvisibleOperator"){let i=S(e);if(i){let[r,s]=ep(i);return r.length>0?[[n,...r],s]:[null,s]}}else if(n==="Delimiter"){let[i,r]=Ke(t);if(r)return i?[["Delimiter",["Sequence",i],...S(e).slice(1)],r]:[null,r]}else if(n==="Add"){let i=S(e);if(i.length>0){let[r,s]=Ke(i[i.length-1]);if(s.length>0){if(r)return[["Add",...i.slice(0,-1),r],s];if(i.length>2)return[["Add",...i.slice(0,-1)],s];if(i.length>2)return[i[0],s]}}}else if(n==="Negate"){let[i,r]=Ke(t);if(r.length>0)return[i?["Negate",i]:null,r]}else if(n==="Divide"){let[i,r]=Ke(t);if(r.length>0)return[["Divide",i??1,m(e,2)],r]}else{let i=S(e);if(i.length===1){let[r,s]=Ke(i[0]);if(s.length>0)return[[v(e),r],s]}}return[e,[]]}function gu(e){return(n,t)=>{if(!m(t,1))return e;let i=m(t,1),r=[];v(i)==="BuiltInFunction"?(r=["x"],i=[m(i,1),"x"]):v(i)==="Function"?(r=S(i).slice(1),i=m(i,1)):w(i)?r=[]:r=[];let s=S(t).slice(1),o=[],a=s.map((c,f)=>{if(w(c)==="Nothing")return o.push(w(r[f])??"Nothing"),"";if(w(c))return o.push(w(c)??"Nothing"),"";let p=v(c);if(p==="Tuple"||p==="Triple"||p==="Pair"||p==="Limits"||p==="Range"){if(ne(c)===3){let d=m(c,1);o.push(w(d)??"Nothing");let b=m(c,2),y=m(c,3);return w(b)==="Nothing"&&(b=null),w(y)==="Nothing"&&(y=null),b!==null&&y!==null?`_{${n.serialize(b)}}^{${n.serialize(y)}}`:b!==null?`_{${n.serialize(b)}}`:y!==null?`^{${n.serialize(y)}}`:""}return`_{${n.serialize(c)}}`}if(ne(c)===2){if(w(m(c,1))){o.push(w(m(c,1))??"Nothing");let y=m(c,2);return w(y)==="Nothing"?"":`_{${n.serialize(y)}}`}o.push(w(r[f])??"Nothing");let d=m(c,1),b=m(c,2);if(w(d)==="Nothing"&&(d=null),w(b)==="Nothing"&&(b=null),d!==null&&b!==null)return`_{${n.serialize(d)}}^{${n.serialize(b)}}`;if(d!==null)return`_{${n.serialize(d)}}`;if(b!==null)return`^{${n.serialize(b)}}`}else o.push(w(r[f])??"Nothing")}),u=o.filter(c=>w(c)!=="Nothing").map(c=>`\\mathrm{d}${n.serialize(w(c)??"x")}`);if(u.length>0&&(u=["\\,",...u]),a.length===0)return`${e}\\,${n.serialize(i)}\\!${u.join(" ")}`;let l=Kf(e,a);return l!==null?l+"\\!"+n.serialize(i)+u.join(" "):a.reverse().map(c=>`${e}${c}`).join("")+"\\!"+n.serialize(i)+u.join(" ")}}function Kf(e,n){let t=n.length;if(t!==2&&t!==3)return null;let r={"\\int":["\\iint","\\iiint"],"\\oint":["\\oiint","\\oiiint"]}[e];return!r||n.slice(1).some(s=>s)?null:r[t-2]+(n[0]??"")}var bu=[{kind:"expression",name:"Integrate",latexTrigger:["\\int"],parse:Jn("Integrate"),serialize:gu("\\int")},{kind:"expression",latexTrigger:["\\iint"],parse:Jn("Integrate",2)},{kind:"expression",latexTrigger:["\\iiint"],parse:Jn("Integrate",3)},{kind:"expression",name:"CircularIntegrate",latexTrigger:["\\oint"],parse:Jn("CircularIntegrate"),serialize:gu("\\oint")},{kind:"expression",latexTrigger:["\\oiint"],parse:Jn("CircularIntegrate",2)},{kind:"expression",latexTrigger:["\\oiiint"],parse:Jn("CircularIntegrate",3)}];function yu(e){let n=e.index;for(;e.match("\\cdot")||e.skipVisualSpace(););return e.matchAll(["\\mathrm","<{>","d","<}>"])||e.matchAll(["\\operatorname","<{>","d","<}>"])||e.match("d")||e.match("\\differentialD")?!0:(e.index=n,!1)}function ep(e){let n=[...e],t=[];for(;n.length>0;){let i;if([n,i]=np(n),!i)break;t.push(i)}return[n,t]}function np(e){if(e.length<2)return[e,""];let n=e[e.length-2];if(n==="d"||n==="d_upright"){let t=w(e[e.length-1]);if(t)return[e.slice(0,-2),t]}return[e,""]}var xu=[{name:"Matrix",serialize:(e,n)=>{let t=S(m(n,1));return Cr(e,t,j(m(n,2)),j(m(n,3)))}},{name:"Vector",serialize:(e,n)=>{let t=S(n);return Cr(e,t.map(i=>["List",i]),j(m(n,2)),j(m(n,3)))}},{kind:"environment",symbolTrigger:"pmatrix",parse:e=>{let n=nn(e),[t,i]=en(e);return n?[t,i,{str:"()"},{str:n}]:[t,i]}},{kind:"environment",symbolTrigger:"bmatrix",parse:e=>{let n=nn(e),[t,i]=en(e);return n?[t,i,{str:"[]"},{str:n}]:[t,i,{str:"[]"}]}},{kind:"environment",symbolTrigger:"Bmatrix",parse:e=>{let n=nn(e),[t,i]=en(e);return n?[t,i,{str:"{}"},{str:n}]:[t,i,{str:"{}"}]}},{kind:"environment",symbolTrigger:"vmatrix",parse:e=>{let n=nn(e),[t,i]=en(e);return n?["Determinant",[t,i,{str:n}]]:["Determinant",[t,i]]}},{kind:"environment",symbolTrigger:"Vmatrix",parse:e=>{let n=nn(e),[t,i]=en(e);return n?["Norm",[t,i,{str:n}]]:["Norm",[t,i]]}},{kind:"environment",symbolTrigger:"smallmatrix",parse:e=>{let n=nn(e),[t,i]=en(e);return n?[t,i,{str:"()"},{str:n}]:[t,i]}},{kind:"environment",symbolTrigger:"array",parse:e=>{let n=nn(e,!1),[t,i]=en(e);return n?[t,i,{str:".."},{str:n}]:[t,i,{str:".."}]}},{kind:"environment",symbolTrigger:"matrix",parse:e=>{let n=nn(e),[t,i]=en(e);return n?[t,i,{str:".."},{str:n}]:[t,i,{str:".."}]}},{kind:"environment",symbolTrigger:"matrix*",parse:e=>{let n=nn(e),[t,i]=en(e);return n?[t,i,{str:".."},{str:n}]:[t,i,{str:".."}]}},{name:"ConjugateTranspose",kind:"postfix",latexTrigger:["^","\\star"]},{kind:"postfix",latexTrigger:["^","\\H"],parse:"ConjugateTranspose"},{kind:"postfix",latexTrigger:["^","\\dagger"],parse:(e,n)=>["ConjugateTranspose",n]},{kind:"postfix",latexTrigger:["^","\\ast"],parse:(e,n)=>["ConjugateTranspose",n]},{kind:"postfix",latexTrigger:["^","\\top"],parse:(e,n)=>["Transpose",n]},{kind:"postfix",latexTrigger:["^","\\intercal"],parse:(e,n)=>["Transpose",n]},{name:"Transpose",kind:"postfix",latexTrigger:["^","T"]},{name:"PseudoInverse",kind:"postfix",latexTrigger:["^","+"]},{name:"Inverse",serialize:(e,n)=>e.serialize(m(n,1))+"^{-1}"},{name:"Trace",kind:"function",latexTrigger:"\\tr",arguments:"implicit",serialize:(e,n)=>zn(e,n,"\\tr")},{symbolTrigger:"tr",kind:"function",parse:"Trace",arguments:"implicit"},{name:"Kernel",kind:"function",latexTrigger:"\\ker",arguments:"implicit",serialize:(e,n)=>zn(e,n,"\\ker")},{symbolTrigger:"ker",kind:"function",parse:"Kernel",arguments:"implicit"},{name:"Dimension",kind:"function",latexTrigger:"\\dim",arguments:"implicit",serialize:(e,n)=>zn(e,n,"\\dim")},{symbolTrigger:"dim",kind:"function",parse:"Dimension",arguments:"implicit"},{name:"Degree",kind:"function",latexTrigger:"\\deg",arguments:"implicit",serialize:(e,n)=>zn(e,n,"\\deg")},{symbolTrigger:"deg",kind:"function",parse:"Degree",arguments:"implicit"},{name:"Hom",kind:"function",latexTrigger:"\\hom",arguments:"implicit",serialize:(e,n)=>zn(e,n,"\\hom")},{symbolTrigger:"hom",kind:"function",parse:"Hom",arguments:"implicit"},{name:"Determinant",kind:"function",latexTrigger:"\\det",arguments:"implicit",serialize:(e,n)=>{let t=m(n,1);if(v(t)==="Matrix"){let i=S(m(t,1));return Cr(e,i,"||",j(m(t,2)))}return zn(e,n,"\\det")}},{symbolTrigger:"det",kind:"function",parse:"Determinant",arguments:"implicit"},{name:"MatrixMultiply",serialize:(e,n)=>{let t=e.serialize(m(n,1)),i=e.serialize(m(n,2));return`${t} \\cdot ${i}`}}];function en(e){let n=e.parseTabular();return n?["Matrix",["List",...n.map(t=>["List",...t])]]:["",null]}function nn(e,n=!0){let t=e.parseStringGroup(n)?.trim();if(!t)return"";let i="";for(let r of t)r==="c"&&(i+="="),r==="l"&&(i+="<"),r==="r"&&(i+=">"),r==="|"&&(i+="|"),r===":"&&(i+=":");return i}function zn(e,n,t){if(S(n).length!==1)return`${t}${e.wrapArguments(n)}`;let r=m(n,1),s=e.serialize(r);return typeof r=="string"||typeof r=="number"?`${t} ${s}`:`${t}\\left(${s}\\right)`}function Cr(e,n,t,i){t??="()";let[r,s]=["",""];typeof t=="string"&&t.length===2&&([r,s]=t);let o="";if(i)for(let c of i)c==="<"?o+="l":c===">"?o+="r":c==="="?o+="c":c==="|"?o+="|":c===":"&&(o+=":");let a=[];for(let c of n??[]){let f=[];for(let p of S(c))f.push(e.serialize(p));a.push(f.join(" & "))}let u=a.join(`\\\\
|
|
6
|
-
`),l=o.length>0?`[${o}]`:"";return r==="("&&s===")"?I(["\\begin{pmatrix}",l,u,"\\end{pmatrix}"]):r==="["&&s==="]"?I(["\\begin{bmatrix}",l,u,"\\end{bmatrix}"]):r==="{"&&s==="}"?I(["\\begin{Bmatrix}",l,u,"\\end{Bmatrix}"]):r==="|"&&s==="|"?I(["\\begin{vmatrix}",l,u,"\\end{vmatrix}"]):r==="\u2016"&&s==="\u2016"?I(["\\begin{Vmatrix}",l,u,"\\end{Vmatrix}"]):r==="{"&&s==="."?I(["\\begin{dcases}",l,u,"\\end{dcases}"]):r==="."&&s==="}"?I(["\\begin{rcases}",l,u,"\\end{rcases}"]):o||r!=="."||s!=="."?I(["\\left",mi[r]??r,"\\begin{array}",`{${o}}`,u,"\\end{array}","\\right",mi[s]??s]):I(["\\begin{matrix}",u,"\\end{matrix}"])}var vu=[{name:"Mean",kind:"function",symbolTrigger:"mean"},{name:"Median",kind:"function",symbolTrigger:"median"},{name:"StandarDeviation",kind:"function",symbolTrigger:"stddev"},{latexTrigger:["\\bar"],kind:"expression",parse:(e,n)=>{let t=e.parseGroup()??e.parseToken();return!t||!w(t)?null:["Mean",t]}},{latexTrigger:"\\operatorname{var}",parse:"Variance"}];var bi={Q:1e30,R:1e27,Y:1e24,Z:1e21,E:1e18,P:1e15,T:1e12,G:1e9,M:1e6,k:1e3,h:100,da:10,d:.1,c:.01,m:.001,\u00B5:1e-6,\u03BC:1e-6,n:1e-9,p:1e-12,f:1e-15,a:1e-18,z:1e-21,y:1e-24,r:1e-27,q:1e-30},Eu=new Set(["m","g","s","A","K","mol","cd","Hz","N","Pa","J","W","C","V","F","ohm","S","Wb","T","H","lm","lx","Bq","Gy","Sv","kat","eV","L","bar"]),yi={m:{dimension:[1,0,0,0,0,0,0],scale:1},kg:{dimension:[0,1,0,0,0,0,0],scale:1},g:{dimension:[0,1,0,0,0,0,0],scale:.001},s:{dimension:[0,0,1,0,0,0,0],scale:1},A:{dimension:[0,0,0,1,0,0,0],scale:1},K:{dimension:[0,0,0,0,1,0,0],scale:1},mol:{dimension:[0,0,0,0,0,1,0],scale:1},cd:{dimension:[0,0,0,0,0,0,1],scale:1},Hz:{dimension:[0,0,-1,0,0,0,0],scale:1},N:{dimension:[1,1,-2,0,0,0,0],scale:1},Pa:{dimension:[-1,1,-2,0,0,0,0],scale:1},J:{dimension:[2,1,-2,0,0,0,0],scale:1},W:{dimension:[2,1,-3,0,0,0,0],scale:1},C:{dimension:[0,0,1,1,0,0,0],scale:1},V:{dimension:[2,1,-3,-1,0,0,0],scale:1},F:{dimension:[-2,-1,4,2,0,0,0],scale:1},ohm:{dimension:[2,1,-3,-2,0,0,0],scale:1},S:{dimension:[-2,-1,3,2,0,0,0],scale:1},Wb:{dimension:[2,1,-2,-1,0,0,0],scale:1},T:{dimension:[0,1,-2,-1,0,0,0],scale:1},H:{dimension:[2,1,-2,-2,0,0,0],scale:1},lm:{dimension:[0,0,0,0,0,0,1],scale:1},lx:{dimension:[-2,0,0,0,0,0,1],scale:1},Bq:{dimension:[0,0,-1,0,0,0,0],scale:1},Gy:{dimension:[2,0,-2,0,0,0,0],scale:1},Sv:{dimension:[2,0,-2,0,0,0,0],scale:1},kat:{dimension:[0,0,-1,0,0,1,0],scale:1},degC:{dimension:[0,0,0,0,1,0,0],scale:1,offset:273.15},degF:{dimension:[0,0,0,0,1,0,0],scale:5/9,offset:459.67},min:{dimension:[0,0,1,0,0,0,0],scale:60},h:{dimension:[0,0,1,0,0,0,0],scale:3600},d:{dimension:[0,0,1,0,0,0,0],scale:86400},ha:{dimension:[2,0,0,0,0,0,0],scale:1e4},L:{dimension:[3,0,0,0,0,0,0],scale:.001},t:{dimension:[0,1,0,0,0,0,0],scale:1e3},eV:{dimension:[2,1,-2,0,0,0,0],scale:1602176634e-28},Da:{dimension:[0,1,0,0,0,0,0],scale:16605390666e-37},au:{dimension:[1,0,0,0,0,0,0],scale:149597870700},deg:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/180},rad:{dimension:[0,0,0,0,0,0,0],scale:1},grad:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/200},turn:{dimension:[0,0,0,0,0,0,0],scale:2*Math.PI},arcmin:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/10800},arcsec:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/648e3},percent:{dimension:[0,0,0,0,0,0,0],scale:.01},ppm:{dimension:[0,0,0,0,0,0,0],scale:1e-6},dB:{dimension:[0,0,0,0,0,0,0],scale:1},Np:{dimension:[0,0,0,0,0,0,0],scale:1},in:{dimension:[1,0,0,0,0,0,0],scale:.0254},ft:{dimension:[1,0,0,0,0,0,0],scale:.3048},mi:{dimension:[1,0,0,0,0,0,0],scale:1609.344},lb:{dimension:[0,1,0,0,0,0,0],scale:.45359237},oz:{dimension:[0,1,0,0,0,0,0],scale:.028349523125},gal:{dimension:[3,0,0,0,0,0,0],scale:.003785411784},atm:{dimension:[-1,1,-2,0,0,0,0],scale:101325},bar:{dimension:[-1,1,-2,0,0,0,0],scale:1e5},cal:{dimension:[2,1,-2,0,0,0,0],scale:4.184},kWh:{dimension:[2,1,-2,0,0,0,0],scale:36e5},\u00C5:{dimension:[1,0,0,0,0,0,0],scale:1e-10}};function tp(e){if(e.length>2){let n=e.slice(0,2),t=e.slice(2);if(bi[n]!==void 0&&Eu.has(t)){let i=yi[t];if(i)return{prefixScale:bi[n],baseEntry:i}}}if(e.length>1){let n=e.slice(0,1),t=e.slice(1);if(bi[n]!==void 0&&Eu.has(t)){let i=yi[t];if(i)return{prefixScale:bi[n],baseEntry:i}}}return null}function ip(e){let n=yi[e];if(n)return n;let t=tp(e);return t?{dimension:t.baseEntry.dimension,scale:t.prefixScale*t.baseEntry.scale}:null}function $r(e){let n=ip(e);return n?n.dimension:null}var O1=new Map(["N","J","W","Pa","Hz","C","V","F","ohm","S","Wb","T","H","lm","lx","Gy","kat"].map(e=>[yi[e].dimension.join(","),e]));function rp(e){let n=e.indexOf("^");if(n===-1)return e;let t=e.slice(0,n),i=e.slice(n+1),r=parseInt(i,10);return isNaN(r)?e:["Power",t,r]}function xt(e){if(e=e.trim(),e.length===0)return null;if(e[0]==="("&&e[e.length-1]===")"){let r=0,s=!0;for(let o=0;o<e.length-1;o++)if(e[o]==="("?r++:e[o]===")"&&r--,r===0&&o<e.length-1){s=!1;break}if(s)return xt(e.slice(1,-1))}let n=-1,t=[],i=0;for(let r=0;r<e.length;r++)e[r]==="("?i++:e[r]===")"?i--:i===0&&(e[r]==="/"&&n===-1?n=r:e[r]==="*"&&t.push(r));if(n!==-1){let r=e.slice(0,n).trim(),s=e.slice(n+1).trim(),o=xt(r),a=xt(s);return!o||!a?null:["Divide",o,a]}if(t.length>0){let r=[],s=0;for(let a of t)r.push(e.slice(s,a).trim()),s=a+1;r.push(e.slice(s).trim());let o=r.filter(a=>a.length>0).map(a=>xt(a));return o.some(a=>a===null)?null:o.length===1?o[0]:["Multiply",...o]}return e[0]==="("?null:rp(e)}function Nu(e){return e=e.trim(),e.length===0?null:/[/*^()]/.test(e)?xt(e):e}function Su(e){if(!e.match("<{>"))return null;let n="",t=0;for(;!e.atEnd;){let i=e.peek;if(i==="<}>"&&t===0)return e.nextToken(),n;if(i==="<}>"){t--,e.nextToken();continue}if(i==="<{>"){t++,e.nextToken();continue}if(i==="<space>"){e.nextToken();continue}if(i==="\\cdot"){n+="*",e.nextToken();continue}if(i==="^"){n+="^",e.nextToken();continue}n+=i,e.nextToken()}return null}var sp=new Set(["d"]);function ku(e){if(!e||e.length===0||sp.has(e))return null;if($r(e)!==null)return e;if(/[/*^]/.test(e))try{let n=Nu(e);if(n!==null&&Rr(n))return n}catch{return null}return null}function Rr(e){if(typeof e=="string")return $r(e)!==null;if(!Array.isArray(e))return!1;let n=e[0];return n==="Multiply"||n==="Divide"?e.slice(1).every(t=>Rr(t)):n==="Power"?Rr(e[1]):!1}var Tu=e=>{let n=e.index,t=Su(e);if(t===null)return e.index=n,null;let i=ku(t);return i===null?(e.index=n,null):["__unit__",i]};function Mn(e){let n=w(e);if(n!==null)return n;if(typeof e=="number")return String(e);let t=v(e);if(!t)return"";if(t==="Divide"){let i=m(e,1),r=m(e,2);return`${Mn(i)}/${Mn(r)}`}if(t==="Multiply"){let i=[];if(Array.isArray(e))for(let r=1;r<e.length;r++)i.push(Mn(e[r]));return i.join("\\cdot ")}if(t==="Power"){let i=m(e,1),r=m(e,2),s=typeof r=="number"?String(r):w(r)??String(r);return`${Mn(i)}^{${s}}`}if(t==="Square"){let i=m(e,1);return`${Mn(i)}^{2}`}return""}function _u(e){let n=e.parseGroup();if(n===null)return null;let t=Mu(e);return t===null?null:["Quantity",n,t]}function Iu(e){return Mu(e)}function Mu(e){let n=e.index,t=Su(e);if(t===null)return e.index=n,null;let i=ku(t);return i===null?(e.index=n,null):i}var wu=[{latexTrigger:"\\mathrm",kind:"expression",parse:Tu},{latexTrigger:"\\text",kind:"expression",parse:Tu},{latexTrigger:"\\qty",parse:_u},{latexTrigger:"\\SI",parse:_u},{latexTrigger:"\\unit",parse:Iu},{latexTrigger:"\\si",parse:Iu},{name:"Quantity",serialize:(e,n)=>{let t=m(n,1),i=m(n,2);if(t===null||i===null)return"";let r=w(i),s=r==="deg"||r==="rad"||r==="arcmin"||r==="arcsec",o=e.options;if(s&&(o.dmsFormat||o.angleNormalization&&o.angleNormalization!=="none")){let l=F(t);if(l===null){let f=e.serialize(t),p=Mn(i);return I([f,"\\,",`\\mathrm{${p}}`])}let c=l;return r==="rad"?c=c*180/Math.PI:r==="arcmin"?c=c/60:r==="arcsec"&&(c=c/3600),o.angleNormalization&&o.angleNormalization!=="none"&&(c=di(c,o.angleNormalization)),o.dmsFormat?hi(c):`${c}\xB0`}let a=e.serialize(t),u=Mn(i);return I([a,"\\,",`\\mathrm{${u}}`])}}];var op=["pt","em","mu","ex","mm","cm","in","bp","sp","dd","cc","pc","nc","nd"];function Au(e){for(e.skipSpace(),(e.peek==="-"||e.peek==="+")&&e.nextToken();/^[\d.]$/.test(e.peek);)e.nextToken();for(let n of op)if(e.matchAll([...n]))return}function ap(e){return n=>{let t=n.parseGroup();return t===null?[e]:[e,t]}}function _e(e,n){return{name:e,latexTrigger:[n],parse:ap(e),serialize:(t,i)=>{let r=m(i,1);return r===null?n:`${n}{${t.serialize(r)}}`}}}function xi(e){return n=>{let t=n.parseExpression();return t!==null&&!Y(t)?["Annotated",t,{dict:{mathStyle:e}}]:"Nothing"}}function Be(e){return n=>{let t=n.parseExpression();return t!==null&&!Y(t)?["Annotated",t,{dict:{size:e}}]:"Nothing"}}var Cu=[{name:"Overscript",latexTrigger:["\\overset"],kind:"infix",precedence:700},{name:"Underscript",latexTrigger:["\\underset"],kind:"infix",precedence:700},{name:"Increment",latexTrigger:["+","+"],kind:"postfix",precedence:880,parse:(e,n)=>w(n)===null?null:["Increment",n]},{name:"Decrement",latexTrigger:["-","-"],kind:"postfix",precedence:880,parse:(e,n)=>w(n)===null?null:["Decrement",n]},{name:"PreIncrement",latexTrigger:["+","+"],kind:"prefix",precedence:880,parse:(e,n)=>{let t=e.parseExpression(n);return w(t)===null?null:["PreIncrement",t]}},{name:"PreDecrement",latexTrigger:["-","-"],kind:"prefix",precedence:880,parse:(e,n)=>{let t=e.parseExpression(n);return w(t)===null?null:["PreDecrement",t]}},{name:"Ring",latexTrigger:["\\circ"],kind:"infix",precedence:265},{name:"StringJoin",latexTrigger:["\\lt","\\gt"],kind:"infix",precedence:780},{name:"Starstar",latexTrigger:["\\star","\\star"],kind:"infix",precedence:780},{name:"PartialDerivative",latexTrigger:["\\partial"],kind:"prefix",parse:e=>{let n=!1,t="Nothing",i="Nothing";for(;!n;)e.skipSpace(),e.match("_")?i=e.parseGroup()??e.parseToken():e.match("^")?t=e.parseGroup()??e.parseToken():n=!0;let r=_n(i);if(r&&(i=["List",...r]),i===null||t===null)return null;let s=e.parseGroup()??"Nothing";if(!Y(s)){let o=e.parseArguments()??["Nothing"];s=[s,...o]}return["PartialDerivative",s,i,t]},serialize:(e,n)=>{let t="\\partial",i=m(n,1),r=m(n,2),s=m(n,3);return r!==null&&r!=="Nothing"&&(v(r)==="List"?t+="_{"+e.serialize(["Sequence",...S(r)])+"}":t+="_{"+e.serialize(r)+"}"),s!==null&&s!=="Nothing"&&(t+="^{"+e.serialize(s)+"}"),i!==null&&i!=="Nothing"&&(t+=e.serialize(i)),t},precedence:740},_e("OverBar","\\overline"),_e("UnderBar","\\underline"),_e("OverVector","\\vec"),_e("OverTilde","\\tilde"),_e("OverHat","\\hat"),_e("OverRightArrow","\\overrightarrow"),_e("OverLeftArrow","\\overleftarrow"),_e("OverRightDoubleArrow","\\Overrightarrow"),_e("OverLeftHarpoon","\\overleftharpoon"),_e("OverRightHarpoon","\\overrightharpoon"),_e("OverLeftRightArrow","\\overleftrightarrow"),_e("OverBrace","\\overbrace"),_e("OverLineSegment","\\overlinesegment"),_e("OverGroup","\\overgroup"),{latexTrigger:["\\textcolor"],parse:e=>{let n=e.index,t=e.parseStringGroup(),i=e.parseGroup();return t!==null?i!==null?["Annotated",i,{dict:{color:t}}]:"Nothing":(e.index=n,"Nothing")}},{latexTrigger:["\\colorbox"],parse:e=>{let n=e.index,t=e.parseStringGroup(),i=e.parseGroup();return t!==null?i!==null?["Annotated",i,{dict:{backgroundColor:t}}]:"Nothing":(e.index=n,"Nothing")}},{latexTrigger:["\\boxed"],parse:e=>{let n=e.parseGroup();return n!==null?["Annotated",n,{dict:{border:!0}}]:"Nothing"}},{latexTrigger:["\\displaystyle"],parse:xi("normal")},{latexTrigger:["\\textstyle"],parse:xi("compact")},{latexTrigger:["\\scriptstyle"],parse:xi("script")},{latexTrigger:["\\scriptscriptstyle"],parse:xi("scriptscript")},{latexTrigger:["\\color"],parse:e=>{let n=e.parseStringGroup();if(n!==null){let t=e.parseExpression();if(t!==null&&!Y(t))return["Annotated",t,{dict:{color:n}}]}return"Nothing"}},{latexTrigger:["\\tiny"],parse:Be(1)},{latexTrigger:["\\scriptsize"],parse:Be(2)},{latexTrigger:["\\footnotesize"],parse:Be(3)},{latexTrigger:["\\small"],parse:Be(4)},{latexTrigger:["\\normalsize"],parse:Be(5)},{latexTrigger:["\\large"],parse:Be(6)},{latexTrigger:["\\Large"],parse:Be(7)},{latexTrigger:["\\LARGE"],parse:Be(8)},{latexTrigger:["\\huge"],parse:Be(9)},{latexTrigger:["\\Huge"],parse:Be(10)},{name:"Annotated",serialize:(e,n)=>{let t=e.serialize(m(n,1)),i=Ja(m(n,2));if(i==null)return t;i.dict.mathStyle==="normal"?t=I(["{\\displaystyle",t,"}"]):i.dict.mathStyle==="compact"?t=I(["{\\textstyle",t,"}"]):i.dict.mathStyle==="script"?t=I(["{\\scriptstyle",t,"}"]):i.dict.mathStyle==="scriptscript"&&(t=I(["{\\scriptscriptstyle",t,"}"]));let r=i.dict.size;return r!==null&&r>=1&&r<=10&&(t=I(["{",{1:"\\tiny",2:"\\scriptsize",3:"\\footnotesize",4:"\\small",5:"\\normalsize",6:"\\large",7:"\\Large",8:"\\LARGE",9:"\\huge",10:"\\Huge"}[r],t,"}"])),i.dict.fontFamily==="monospace"?t=I(["\\texttt{",t,"}"]):i.dict.fontFamily==="sans-serif"&&(t=I(["\\textsf{",t,"}"])),i.dict.fontWeight==="bold"&&(t=I(["\\textbf{",t,"}"])),i.dict.fontStyle==="italic"?t=I(["\\textit{",t,"}"]):i.dict.fontStyle==="normal"&&(t=I(["\\textup{",t,"}"])),i.dict.color&&(t=I(["\\textcolor{",i.dict.color,"}{",t,"}"])),i.dict.backgroundColor&&(t=I(["\\colorbox{",i.dict.backgroundColor,"}{",t,"}"])),i.dict.border===!0&&(t=I(["\\boxed{",t,"}"])),t}},{latexTrigger:["\\!"],parse:()=>["HorizontalSpacing",-3]},{latexTrigger:["\\ "],parse:()=>["HorizontalSpacing",6]},{latexTrigger:["\\:"],parse:()=>["HorizontalSpacing",4]},{latexTrigger:["\\enskip"],parse:()=>["HorizontalSpacing",9]},{latexTrigger:["\\quad"],parse:()=>["HorizontalSpacing",18]},{latexTrigger:["\\qquad"],parse:()=>["HorizontalSpacing",36]},{latexTrigger:["\\,"],parse:()=>["HorizontalSpacing",3]},{latexTrigger:["\\;"],parse:()=>["HorizontalSpacing",5]},{latexTrigger:["\\enspace"],parse:()=>["HorizontalSpacing",9]},{latexTrigger:["\\hspace"],parse:e=>(e.peek==="*"&&e.nextToken(),e.parseStringGroup(),["HorizontalSpacing",0])},{latexTrigger:["\\hskip"],parse:e=>(Au(e),["HorizontalSpacing",0])},{latexTrigger:["\\kern"],parse:e=>(Au(e),["HorizontalSpacing",0])},{latexTrigger:["\\phantom"],parse:e=>(e.parseGroup(),"Nothing")},{latexTrigger:["\\vphantom"],parse:e=>(e.parseGroup(),"Nothing")},{latexTrigger:["\\hphantom"],parse:e=>(e.parseGroup(),"Nothing")},{latexTrigger:["\\placeholder"],parse:e=>(e.parseOptionalGroup(),e.parseGroup()??"Nothing")},{latexTrigger:["\\smash"],parse:e=>(e.parseGroup(),"Nothing")},{latexTrigger:["\\strut"],parse:e=>"Nothing"},{latexTrigger:["\\mathstrut"],parse:e=>"Nothing"},{name:"HorizontalSpacing",serialize:(e,n)=>{if(m(n,2)!==null){let i=j(m(n,2)),r=e.serialize(m(n,1));return i==="bin"?`\\mathbin{${r}}`:i==="op"?`\\mathop{${r}}`:i==="rel"?`\\mathrel{${r}}`:i==="ord"?`\\mathord{${r}}`:i==="open"?`\\mathopen{${r}}`:i==="close"?`\\mathclose{${r}}`:i==="punct"?`\\mathpunct{${r}}`:i==="inner"?`\\mathinner{${r}}`:r}let t=F(m(n,1));return t===null?"":{"-3":"\\!",6:"\\ ",3:"\\,",4:"\\:",5:"\\;",9:"\\enspace",18:"\\quad",36:"\\qquad"}[t]??""}},{latexTrigger:"\\operatorname{count}",parse:"Length"},{latexTrigger:"\\operatorname{random}",parse:"Random"},{latexTrigger:"\\operatorname{shuffle}",parse:"Shuffle"},{latexTrigger:"\\operatorname{repeat}",parse:"Repeat"},{latexTrigger:"\\operatorname{join}",parse:"Join"},{latexTrigger:"\\operatorname{range}",parse:"Range"},{name:"Triangle",latexTrigger:["\\operatorname{triangle}"],kind:"function",serialize:(e,n)=>"\\operatorname{triangle}"+e.wrapArguments(n)},{name:"GeometricVector",latexTrigger:["\\operatorname{vector}"],kind:"function",serialize:(e,n)=>"\\operatorname{vector}"+e.wrapArguments(n)},{name:"Sphere",latexTrigger:["\\operatorname{sphere}"],kind:"function",serialize:(e,n)=>"\\operatorname{sphere}"+e.wrapArguments(n)},{name:"Segment",latexTrigger:["\\operatorname{segment}"],kind:"function",serialize:(e,n)=>"\\operatorname{segment}"+e.wrapArguments(n)}];var $u=[{name:"Rgb",latexTrigger:["\\operatorname{rgb}"],kind:"function",serialize:(e,n)=>"\\operatorname{rgb}"+e.wrapArguments(n)},{name:"Hsv",latexTrigger:["\\operatorname{hsv}"],kind:"function",serialize:(e,n)=>"\\operatorname{hsv}"+e.wrapArguments(n)},{name:"Hsl",latexTrigger:["\\operatorname{hsl}"],kind:"function",serialize:(e,n)=>"\\operatorname{hsl}"+e.wrapArguments(n)},{name:"Oklab",latexTrigger:["\\operatorname{oklab}"],kind:"function",serialize:(e,n)=>"\\operatorname{oklab}"+e.wrapArguments(n)},{name:"Oklch",latexTrigger:["\\operatorname{oklch}"],kind:"function",serialize:(e,n)=>"\\operatorname{oklch}"+e.wrapArguments(n)},{name:"AsRgb",latexTrigger:["\\operatorname{asRgb}"],kind:"function",serialize:(e,n)=>"\\operatorname{asRgb}"+e.wrapArguments(n)},{name:"AsHsv",latexTrigger:["\\operatorname{asHsv}"],kind:"function",serialize:(e,n)=>"\\operatorname{asHsv}"+e.wrapArguments(n)},{name:"AsHsl",latexTrigger:["\\operatorname{asHsl}"],kind:"function",serialize:(e,n)=>"\\operatorname{asHsl}"+e.wrapArguments(n)},{name:"AsOklab",latexTrigger:["\\operatorname{asOklab}"],kind:"function",serialize:(e,n)=>"\\operatorname{asOklab}"+e.wrapArguments(n)},{name:"AsOklch",latexTrigger:["\\operatorname{asOklch}"],kind:"function",serialize:(e,n)=>"\\operatorname{asOklch}"+e.wrapArguments(n)},{name:"ColorDelta",latexTrigger:["\\operatorname{colorDelta}"],kind:"function",serialize:(e,n)=>"\\operatorname{colorDelta}"+e.wrapArguments(n)}];var up=[{name:"Mu0",kind:"symbol",latexTrigger:"\\mu_0"},{name:"VacuumPermittivity",kind:"symbol",latexTrigger:"\\varepsilon_0"}];var lp=[...Xa,...eu,...nu,...Ga,...ru,...Nn,...pu,...mu,...du,...bu,...xu,...vu,...wu,...Cu,...up,...$u];var cp="\\u{FE0F}",fp="\\u{20E3}",pp="\\u{200D}",mp="\\p{RI}\\p{RI}",dp="(?:[\\u{E0020}-\\u{E007E}]+\\u{E007F})",Ru=`(?:\\p{EMod}|${cp}${fp}?|${dp})`,hp="(?:(?=\\P{XIDC})(?=[^\\x23\\x2a\\x30-\\x39])\\p{Emoji})",Pu=`(?:${hp}${Ru}*|\\p{Emoji}${Ru}+|${mp})`,Du=`(?:${Pu})(${pp}${Pu})*`,cb=new RegExp(`(?:${Du})+`,"u"),Fu=new RegExp(`^(?:${Du})+$`,"u");var ry=new Set([...'!"#$%&(),/;:?@[]\\`|~'.split(""),"\\left","\\bigl","\\mleft"]);var sy=["pt","em","mu","ex","mm","cm","in","bp","sp","dd","cc","pc","nc","nd"].map(e=>[...e]);function Lu(e){return e!==void 0&&"value"in e}function vt(e){return e!==void 0&&"operator"in e}function wn(e,n,t=!0){let i=!t||e.every(s=>s.isCanonical)?e:e.map(s=>s.canonical);if(n){let s=a=>_(a,"Nothing")||a.operator===n||a.operator==="Sequence";if(i.every(a=>!s(a)))return i;let o=[];for(let a of i)_(a,"Nothing")||(g(a)&&(a.operator===n||a.operator==="Sequence")?o.push(...wn(a.ops,n,t)):o.push(a));return o}if(i.every(s=>!(_(s,"Nothing")||s.operator==="Sequence")))return i;let r=[];for(let s of i)_(s,"Nothing")||(g(s,"Sequence")?r.push(...wn(s.ops,n,t)):r.push(s));return r}function vp(e,n){if(e===n)return 0;if(e.length===0)return n.length;if(n.length===0)return e.length;let t=Array.from({length:e.length+1},(r,s)=>s),i=new Array(e.length+1);for(let r=1;r<=n.length;r++){i[0]=r;for(let s=1;s<=e.length;s++){let o=e[s-1]===n[r-1]?0:1;i[s]=Math.min(t[s]+1,i[s-1]+1,t[s-1]+o)}[t,i]=[i,t]}return t[e.length]}function Dr(e,n){let i=null,r=1/0,s=e.length;for(let o of n){if(Math.abs(s-o.length)>7)continue;let a=vp(e,o);if(a===0)return o;a<=7&&a<r&&(r=a,i=o)}return i}function vi(e,n,t){if(n=wn(n),!e.strict||n.length===t)return n;let i=[...n.slice(0,t)],r=Math.min(t,n.length);for(;r<t;)i.push(e.error("missing")),r+=1;for(;r<n.length;)i.push(e.error("unexpected-argument",n[r].toString())),r+=1;return i}function an(e,n,t){return n==null?e.error("missing"):t===void 0?e.error("unexpected-argument",n.toString()):(n=n.canonical,!n.isValid||n.type.matches(t)?n:e.typeError(t,n.type,n))}function Fr(e,n,t){if(n.length===t.length&&n.every((r,s)=>r.type.matches(t[s])))return n;let i=[];for(let r=0;r<=t.length-1;r++)i.push(an(e,n[r],t[r]));for(let r=t.length;r<=n.length-1;r++)i.push(e.error("unexpected-argument",n[r].toString()));return i}function Bu(e){let n={},t=Sp(e.engine),i=Ip(e.engine);if(_(e)&&!n[e.symbol]&&!e.symbol.startsWith("_")){if(!t.includes(e.symbol)){let r=Dr(e.symbol,t);r&&(n[e.symbol]=r)}}else if(g(e)&&!n[e.operator]&&!e.operator.startsWith("_")){let r=e.operator;if(!i.includes(r)){let s=Dr(r,i);s&&(n[r]=s)}for(let s of e.ops)n={...n,...Bu(s)}}return n}function Ip(e){let n=[],t=e.context.lexicalScope;for(;t;){for(let i of t.bindings.keys()){let r=t.bindings.get(i);vt(r)&&n.push(i)}t=t.parent}return n}function Sp(e){let n=[],t=e.context.lexicalScope;for(;t;){for(let i of t.bindings.keys()){let r=t.bindings.get(i);Lu(r)&&n.push(i)}t=t.parent}return n}function tn(e){let n=Bu(e);if(Object.keys(n).length===0)return"";if(Object.keys(n).length===1){let[i,r]=Object.entries(n)[0];return`Unknown symbol "${i}". Did you mean "${r}"?`}let t=[];for(let[i,r]of Object.entries(n))t.push(`- "${i}" -> "${r}"?`);return`Unknown symbols found:
|
|
5
|
+
`))}advance(){let n=this.current;return this.current=this.lexer.consumeToken(),n}match(n){return this.current.type===n?(this.advance(),!0):!1}expect(n){return this.current.type!==n&&this.error(`Expected ${n}, got ${this.current.type}`),this.advance()}createNode(n,t={}){return{kind:n,position:this.current.position,line:this.current.line,column:this.current.column,...t}}parseType(){this.checkForNakedFunctionSignature();let n=this.parseUnionType();if(n||this.error("Expected a type"),this.current.type!=="EOF")if(this.current.type==="->"||this.current.type==="+"||this.current.type==="*"||this.current.type==="?")this.error("Function signatures must be enclosed in parentheses","For example `(x: number) -> number`");else if(this.current.type==="("){let t=this.lexer.input;t.includes("set(")||t.includes("collection(")||t.includes("list(")||t.includes("tuple(")?t.includes("set(")?this.error("Use `set<integer>` instead of `set(integer)`."):t.includes("collection(")?this.error("Use `collection<type>` instead of `collection(type)`.","For example `collection<number>`"):t.includes("list(")?this.error("Use `list<type>` instead of `list(type)`.","For example `list<number>`"):t.includes("tuple(")&&this.error("Use `tuple<type1, type2>` instead of `tuple(type1, type2)`.","For example `tuple<string, number>`"):this.error("Unexpected token after type")}else this.error("Unexpected token after type");return n}checkForNakedFunctionSignature(){if(this.current.type==="IDENTIFIER"){let n=this.lexer.saveState(),t=this.current;try{let i=this.current;if(this.advance(),this.current.type===":"){this.advance();let r=!1,s=0,o=10;for(;this.current.type!=="EOF"&&s<o;){if(this.current.type==="->"){r=!0;break}if(this.current.type==="+"||this.current.type==="*"||this.current.type==="?"){if(this.advance(),this.current.type==="->"){r=!0;break}s++}this.advance(),s++}r&&(this.lexer.restoreState(n),this.current=t,this.errorAtToken(i,"Function signatures must be enclosed in parentheses","For example `(z: string*) -> boolean`"))}this.lexer.restoreState(n),this.current=t}catch(i){if(this.lexer.restoreState(n),this.current=t,i instanceof Error&&i.message.includes("Function signatures must be enclosed"))throw i}}}parseUnionType(){let n=this.parseIntersectionType();if(!n)return;let t=[n];for(;this.match("|");){let i=this.parseIntersectionType();i||this.error("Expected type after |"),t.push(i)}return t.length===1?t[0]:this.createNode("union",{types:t})}parseIntersectionType(){let n=this.parsePrimaryType();if(!n)return;let t=[n];for(;this.match("&");){let i=this.parsePrimaryType();i||this.error("Expected type after &"),t.push(i)}return t.length===1?t[0]:this.createNode("intersection",{types:t})}parsePrimaryType(){if(this.match("!")){let n=this.parsePrimaryType();return n||this.error("Expected type after !"),this.createNode("negation",{type:n})}if(this.current.type==="("){let n=this.parseFunctionSignature();if(n)return n;if(this.match("(")){let t=this.parseUnionType();if(t||this.error("Expected type after ("),this.current.type===","){let i=[this.createNode("named_element",{name:void 0,type:t})];for(;this.match(",");){let r=this.parseUnionType();r||this.error("Expected type after ,"),i.push(this.createNode("named_element",{name:void 0,type:r}))}return this.expect(")"),this.createNode("tuple",{elements:i})}return this.expect(")"),this.createNode("group",{type:t})}}return this.parseListType()||this.parseTupleType()||this.parseRecordType()||this.parseDictionaryType()||this.parseSetType()||this.parseCollectionType()||this.parseExpressionType()||this.parseSymbolType()||this.parseNumericType()||this.parsePrimitiveType()||this.parseValue()||this.parseTypeReference()}isFunctionSignature(){let n=this.lexer.saveState(),t=this.current;this.advance();let i=1;for(;i>0&&this.current.type!=="EOF";)this.current.type==="("?i++:this.current.type===")"&&i--,this.advance();let r=this.current.type==="->";return this.lexer.restoreState(n),this.current=t,r}parseFunctionSignature(){if(this.current.type!=="("||!this.isFunctionSignature())return;let n=[];if(this.advance(),!this.match(")")){do{let o=this.parseArgument();o||this.error("Expected argument"),n.push(o)}while(this.match(","));this.expect(")")}this.expect("->");let t=this.parseUnionType();t||this.error("Expected return type after ->");let i=n.some(o=>o.modifier==="optional"),r=n.some(o=>o.modifier==="variadic_zero"||o.modifier==="variadic_one"),s=n.filter(o=>o.modifier==="variadic_zero"||o.modifier==="variadic_one").length;return i&&r&&this.error("Variadic arguments cannot be used with optional arguments"),s>1&&this.error("There can be only one variadic argument"),this.createNode("function_signature",{arguments:n,returnType:t})}parseArgument(){let n=this.parseNamedElement();if(!n)return;let t;return this.match("?")?t="optional":this.match("*")?t="variadic_zero":this.match("+")&&(t="variadic_one"),this.createNode("argument",{element:n,modifier:t})}parseNamedElement(){let n;if(this.current.type==="IDENTIFIER"||this.current.type==="VERBATIM_STRING"){let i=this.current;if(this.lexer.peekToken().type===":"){n=i.value,this.advance(),this.advance();let s=this.parseUnionType();return s?this.createNode("named_element",{name:n,type:s}):void 0}}let t=this.parseUnionType();if(t)return this.createNode("named_element",{name:void 0,type:t})}parseListType(){if(this.current.type==="IDENTIFIER"){let n=this.current,i=this.lexer.peekToken().type==="<";switch(n.value){case"list":return i?(this.advance(),this.parseListTypeImpl()):void 0;case"vector":return i?(this.advance(),this.parseVectorType()):(this.advance(),this.createNode("list",{elementType:this.createNode("primitive",{name:"number"}),dimensions:void 0}));case"matrix":return i?(this.advance(),this.parseMatrixType()):(this.advance(),this.createNode("matrix",{elementType:this.createNode("primitive",{name:"number"}),dimensions:[this.createNode("dimension",{size:-1}),this.createNode("dimension",{size:-1})]}));case"tensor":return i?(this.advance(),this.parseTensorType()):(this.advance(),this.createNode("list",{elementType:this.createNode("primitive",{name:"number"}),dimensions:void 0}));default:return}}}parseListTypeImpl(){let n=this.createNode("primitive",{name:"any"}),t;if(this.match("<")){if(t=this.parseDimensions(),!t){let i=this.parseUnionType();i&&(n=i,this.match("^")&&(t=this.parseCaretDimensions()))}this.expect(">")}return this.createNode("list",{elementType:n,dimensions:t})}parseVectorType(){let n=this.createNode("primitive",{name:"number"}),t;if(this.match("<")){if(this.current.type==="NUMBER_LITERAL")t=parseInt(this.advance().value);else{let i=this.parseUnionType();i&&(n=i,this.match("^")&&(this.current.type==="NUMBER_LITERAL"?t=parseInt(this.advance().value):this.error("Expected number after ^")))}this.expect(">")}return this.createNode("vector",{elementType:n,size:t})}parseMatrixType(){let n=this.createNode("primitive",{name:"number"}),t;if(this.match("<")){if(t=this.parseDimensions(),!t){let i=this.parseUnionType();i&&(n=i,this.match("^")&&(t=this.parseCaretDimensions()))}this.expect(">")}else t=[this.createNode("dimension",{size:null}),this.createNode("dimension",{size:null})];return this.createNode("matrix",{elementType:n,dimensions:t})}parseTensorType(){let n=this.createNode("primitive",{name:"number"});if(this.match("<")){let t=this.parseUnionType();t&&(n=t),this.expect(">")}return this.createNode("tensor",{elementType:n})}parseDimensions(){let n=this.parseDimension();if(!n)return;let t=[n];for(;;){let i=this.current;if(i.type==="IDENTIFIER"&&/^(x\d+)+$/.test(i.value)){this.advance();for(let r of i.value.match(/x(\d+)/g))t.push(this.createNode("dimension",{size:parseInt(r.slice(1))}))}else if(i.type==="IDENTIFIER"&&i.value==="x"){let r=this.lexer.peekToken();r.type!=="NUMBER_LITERAL"&&r.type!=="?"&&this.error("Expected a positive integer literal or `?` after x. For example: `2x3` or `2x?`"),this.advance(),t.push(this.parseDimension())}else break}return t}parseDimension(){if(this.match("?"))return this.createNode("dimension",{size:null});if(this.current.type==="NUMBER_LITERAL"){let n=parseInt(this.advance().value);return this.createNode("dimension",{size:n})}}parseCaretDimensions(){let n=this.match("("),t=this.parseDimensions();return n&&this.expect(")"),t}parseTupleType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="tuple"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let t=[];if(this.current.type!==">"){let i=this.parseNamedElement();i||this.error("Expected tuple element"),t.push(i);let r=i.name!==void 0;for(;this.match(",");){let s=this.parseNamedElement();s||this.error("Expected tuple element"),r&&!s.name&&this.error("All tuple elements should be named, or none. Previous elements were named, but this one isn't."),!r&&s.name&&this.error("All tuple elements should be named, or none. Previous elements were not named, but this one is."),t.push(s)}}return this.expect(">"),this.createNode("tuple",{elements:t})}}parseRecordType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="record"){this.advance();let n=[];if(this.match("<")){if(this.current.type!==">")do{let t=this.parseRecordEntry();t||this.error("Expected record entry"),n.push(t)}while(this.match(","));this.expect(">")}return this.createNode("record",{entries:n})}}parseRecordEntry(){let n;if(this.current.type==="IDENTIFIER")n=this.advance().value;else if(this.current.type==="VERBATIM_STRING")n=this.advance().value;else return;this.expect(":");let t=this.parseUnionType();return t||this.error("Expected value type"),this.createNode("record_entry",{key:n,valueType:t})}parseDictionaryType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="dictionary"){this.advance();let n=this.createNode("primitive",{name:"any"});if(this.match("<")){let t=this.parseUnionType();t&&(n=t),this.expect(">")}return this.createNode("dictionary",{valueType:n})}}parseSetType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="set"){this.advance();let n=this.createNode("primitive",{name:"any"});if(this.match("<")){let t=this.parseUnionType();t&&(n=t),this.expect(">")}return this.createNode("set",{elementType:n})}}parseCollectionType(){if(this.current.type==="IDENTIFIER"){let n=this.current.value==="indexed_collection",t=this.current.value==="collection";if(n||t){this.advance();let i=this.createNode("primitive",{name:"any"});if(this.match("<")){let r=this.parseUnionType();r&&(i=r),this.expect(">")}return this.createNode("collection",{elementType:i,indexed:n})}}}parseExpressionType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="expression"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let i=this.expect("IDENTIFIER").value;return this.expect(">"),this.createNode("expression",{operator:i})}}parseSymbolType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="symbol"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let i=this.expect("IDENTIFIER").value;return this.expect(">"),this.createNode("symbol",{name:i})}}parseNumericType(){if(this.current.type==="IDENTIFIER"&&["real","finite_real","rational","finite_rational","integer","finite_integer"].includes(this.current.value)){let t=this.advance().value;if(this.match("<")){let i=this.parseValue();this.expect("..");let r=this.parseValue();this.expect(">");let s=i?.value??-1/0,o=r?.value??1/0;return(Number.isNaN(s)||Number.isNaN(o))&&this.error("Invalid numeric type","Lower and upper bounds must be valid numbers"),s>o&&this.error(`Invalid range: ${s}..${o}`,"The lower bound must be less than the upper bound"),this.createNode("numeric",{baseType:t,lowerBound:i,upperBound:r})}return this.createNode("numeric",{baseType:t})}}parsePrimitiveType(){if(this.current.type==="IDENTIFIER"){let n=this.current.value;if(vn.has(n))return this.advance(),this.createNode("primitive",{name:n})}}parseValue(){let n,t;switch(this.current.type){case"STRING_LITERAL":n=this.advance().value,t="string";break;case"NUMBER_LITERAL":n=parseFloat(this.advance().value),t="number";break;case"TRUE":this.advance(),n=!0,t="boolean";break;case"FALSE":this.advance(),n=!1,t="boolean";break;case"NAN":this.advance(),n=NaN,t="nan";break;case"INFINITY":case"PLUS_INFINITY":this.advance(),n=1/0,t="infinity";break;case"MINUS_INFINITY":this.advance(),n=-1/0,t="infinity";break;default:return}return this.createNode("value",{value:n,valueType:t})}parseTypeReference(){let n=this.current.type==="IDENTIFIER"&&this.current.value==="type";if(n&&this.advance(),this.current.type==="IDENTIFIER"){let t=this.current,i=this.advance().value;return this.typeResolver.resolve(i)?this.createNode("type_reference",{name:i,isForward:n}):n&&this.typeResolver.forward(i)?this.createNode("type_reference",{name:i,isForward:!0}):(n||this.errorAtToken(t,`Unknown type "${i}"`,"Syntax error. The type was not recognized."),this.createNode("type_reference",{name:i,isForward:n}))}}};function ma(e,n){switch(e.kind){case"function_signature":return n.visitFunctionSignature(e);case"union":return n.visitUnionType(e);case"intersection":return n.visitIntersectionType(e);case"negation":return n.visitNegationType(e);case"group":return n.visitGroupType(e);case"list":return n.visitListType(e);case"vector":return n.visitVectorType(e);case"matrix":return n.visitMatrixType(e);case"tensor":return n.visitTensorType(e);case"tuple":return n.visitTupleType(e);case"record":return n.visitRecordType(e);case"dictionary":return n.visitDictionaryType(e);case"set":return n.visitSetType(e);case"collection":return n.visitCollectionType(e);case"expression":return n.visitExpressionType(e);case"symbol":return n.visitSymbolType(e);case"numeric":return n.visitNumericType(e);case"primitive":return n.visitPrimitiveType(e);case"type_reference":return n.visitTypeReference(e);case"value":return n.visitValue(e);default:throw new Error(`Unknown node kind: ${e.kind}`)}}var pr=class{typeResolver;constructor(n){this.typeResolver=n??{forward:()=>{},resolve:()=>{},get names(){return[]}}}buildType(n){return ma(n,this)}visitFunctionSignature(n){let t=[],i=[],r,s;for(let u of n.arguments){let l=this.buildNamedElement(u.element);switch(u.modifier){case"optional":i.push(l);break;case"variadic_zero":r=l,s=0;break;case"variadic_one":r=l,s=1;break;default:t.push(l);break}}let o=this.buildType(n.returnType),a={kind:"signature",args:t.length>0?t:void 0,result:o};return i.length>0&&(a.optArgs=i),r&&(a.variadicArg=r,a.variadicMin=s),a}visitUnionType(n){return{kind:"union",types:n.types.map(i=>this.buildType(i))}}visitIntersectionType(n){return{kind:"intersection",types:n.types.map(i=>this.buildType(i))}}visitNegationType(n){return{kind:"negation",type:this.buildType(n.type)}}visitGroupType(n){return this.buildType(n.type)}visitListType(n){let t=this.buildType(n.elementType),i=n.dimensions?.map(r=>this.buildDimension(r));return{kind:"list",elements:t,dimensions:i}}visitVectorType(n){let t=this.buildType(n.elementType);return n.size!==void 0?{kind:"list",elements:t,dimensions:[n.size]}:{kind:"list",elements:t}}visitMatrixType(n){let t=this.buildType(n.elementType);if(n.dimensions){let i=n.dimensions.map(r=>this.buildDimension(r));return{kind:"list",elements:t,dimensions:i}}return{kind:"list",elements:t,dimensions:[-1,-1]}}visitTensorType(n){return{kind:"list",elements:this.buildType(n.elementType)}}visitTupleType(n){return{kind:"tuple",elements:n.elements.map(i=>this.buildNamedElement(i))}}visitRecordType(n){if(n.entries.length===0)return"record";let t={};for(let i of n.entries)t[i.key]=this.buildType(i.valueType);return{kind:"record",elements:t}}visitDictionaryType(n){let t=this.buildType(n.valueType);return this.isAnyType(t)?"dictionary":{kind:"dictionary",values:t}}visitSetType(n){let t=this.buildType(n.elementType);return this.isAnyType(t)?"set":{kind:"set",elements:t}}visitCollectionType(n){let t=this.buildType(n.elementType);return n.indexed?this.isAnyType(t)?"indexed_collection":{kind:"indexed_collection",elements:t}:this.isAnyType(t)?"collection":{kind:"collection",elements:t}}visitExpressionType(n){return{kind:"expression",operator:n.operator}}visitSymbolType(n){return{kind:"symbol",name:n.name}}visitNumericType(n){if(!n.lowerBound&&!n.upperBound)return n.baseType;let t=n.lowerBound?this.buildValue(n.lowerBound):-1/0,i=n.upperBound?this.buildValue(n.upperBound):1/0;return t===-1/0&&i===1/0?n.baseType:{kind:"numeric",type:n.baseType,lower:t,upper:i}}visitPrimitiveType(n){return n.name}visitTypeReference(n){let t=this.typeResolver.resolve(n.name);if(t)return t;if(n.isForward){let i=this.typeResolver.forward(n.name);if(i)return i}return n.name}visitValue(n){return{kind:"value",value:n.value}}buildNamedElement(n){let t=this.buildType(n.type);return n.name?{name:n.name,type:t}:{type:t}}buildDimension(n){return n.size??-1}buildValue(n){return n.value}isAnyType(n){return n==="any"||typeof n=="object"&&"kind"in n&&n.kind==="primitive"&&"name"in n&&n.name==="any"}};function da(e,n){return new pr(n).buildType(e)}var ii=new Map,af=2048;function ha(e){if(e===null||typeof e!="object"||Object.isFrozen(e))return e;Object.freeze(e);for(let n of Object.values(e))ha(n);return e}function K(e,n){if(e===void 0)return;if(ei(e))return e;if(typeof e!="string")return;let t=n===void 0;if(t){let i=ii.get(e);if(i!==void 0)return i}try{let r=new ti(e,{typeResolver:n}).parseType(),s=da(r,n);return t&&(ii.size>=af&&ii.clear(),ii.set(e,ha(s))),s}catch(i){throw new Error(`Failed to parse type "${e}": ${i instanceof Error?i.message:String(i)}`)}}var ga={number:Wt,non_finite_number:[],finite_number:["finite_complex","finite_real","finite_integer","finite_rational"],complex:["finite_complex","imaginary","finite_real","finite_rational","finite_integer","non_finite_number"],finite_complex:["imaginary","finite_real","finite_rational","finite_integer"],imaginary:[],real:["rational","integer","finite_real","finite_rational","finite_integer","non_finite_number"],finite_real:["finite_rational","finite_integer"],rational:["finite_rational","finite_integer","integer","non_finite_number"],finite_rational:["finite_integer"],integer:["finite_integer","non_finite_number"],finite_integer:[],any:fr,unknown:[],nothing:[],never:[],error:[],value:lr,scalar:Qt,collection:Xt,indexed_collection:ur,list:[],set:[],tuple:[],record:[],dictionary:[],function:[],symbol:[],boolean:[],string:[],color:[],expression:cr},ft=(()=>{let e={},n=t=>{if(e[t])return e[t];let i=new Set([t]);e[t]=i;for(let r of ga[t])if(r!==t)for(let s of n(r))i.add(s);return i};for(let t of Object.keys(ga))n(t);return e})();function ct(e,n){return n==="any"||e==="never"?!0:e==="unknown"||n==="unknown"?!1:e===n?!0:ft[n].has(e)}function va(e,n){if(e===n)return[e];let t=ft[e],i=ft[n];if(t.has(n))return[n];if(i.has(e))return[e];let r=e<n?`${e}|${n}`:`${n}|${e}`,s=ba.get(r);if(s)return s;let o=[];for(let u of t)i.has(u)&&o.push(u);let a=o.filter(u=>!o.some(l=>l!==u&&ft[l].has(u)));return ba.set(r,a),a}var ba=new Map;function A(e,n){if(typeof e=="string"&&!vn.has(e)&&(e=K(e)),typeof n=="string"&&!vn.has(n)&&(n=K(n)),n==="any"||e==="never")return!0;if(n==="never")return!1;if(n==="error")return e==="error";if(n==="nothing")return e==="nothing";if(e==="nothing")return!1;if(n==="unknown")return!0;if(e==="unknown")return!1;if(typeof n=="string")return typeof e=="string"?ct(e,n):e.kind==="value"?typeof e.value=="boolean"?n==="boolean":typeof e.value=="number"?Number.isInteger(e.value)?ct("integer",n):ct("real",n):typeof e.value=="boolean"?ct("boolean",n):typeof e.value=="string"?ct("string",n):!1:e.kind==="union"?e.types.every(t=>A(t,n)):e.kind==="intersection"?e.types.some(t=>A(t,n)):e.kind==="negation"?!A(e.type,n):e.kind==="numeric"?!!A(e.type,n):n==="number"?Ea(e):n==="symbol"?mr(e):n==="expression"?uf(e):n==="function"?Sa(e):n==="scalar"?Na(e):n==="value"?Ia(e):n==="indexed_collection"?_a(e):n==="collection"?Ta(e):n==="tuple"?e.kind==="tuple":n==="list"?e.kind==="list":n==="set"?e.kind==="set":n==="record"?e.kind==="record":n==="dictionary"?e.kind==="dictionary":!1;if(n.kind==="union")return typeof e!="string"&&e.kind==="union"?e.types.every(t=>n.types.some(i=>A(t,i))):n.types.some(t=>A(e,t));if(n.kind==="expression"){if(e==="symbol")return!0;if(typeof e=="string")return!1;if(e.kind==="expression")return n.operator==="Symbol"?mr(e):e.operator===n.operator;if(e.kind==="symbol")return!0}if(typeof e=="string")return!1;if(n.kind==="reference"){if(e.kind==="reference")return e.name===n.name;if(n.alias===!0&&n.def)return A(e,n.def)}if(e.kind==="union")return e.types.some(t=>A(t,n));if(e.kind==="intersection"&&n.kind==="intersection")return n.types.every(t=>e.types.some(i=>A(i,t)));if(e.kind==="intersection")return e.types.every(t=>A(t,n));if(n.kind==="intersection")return n.types.every(t=>A(e,t));if(e.kind==="signature"&&n.kind==="signature"){if(!A(e.result,n.result))return!1;if(e.optArgs||e.variadicArg){if(n.args){if(!e.args||e.args.length!==n.args.length)return!1;for(let t=0;t<n.args.length;t++)if(!A(n.args[t].type,e.args[t].type))return!1}else if(e.args)return!1;if(n.optArgs){if(!e.optArgs||e.optArgs.length!==n.optArgs.length)return!1;for(let t=0;t<e.optArgs.length;t++)if(!A(n.optArgs[t].type,e.optArgs[t].type))return!1}else if(e.optArgs)return!1;if(n.variadicArg){if(!e.variadicArg||e.variadicMin!=n.variadicMin||!A(n.variadicArg.type,e.variadicArg.type))return!1}else if(e.variadicArg)return!1}else{if(n.args&&!e.args)return!1;let t=0;if(n.args){if(e.args.length<n.args.length)return!1;for(;t<n.args.length;){if(!A(n.args[t].type,e.args[t].type))return!1;t+=1}}if(n.optArgs){if(t>=e.args.length)return!0;for(let i=0;i<n.optArgs.length;i++){if(!A(n.optArgs[i].type,e.args[t].type))return!1;if(t+=1,t>=e.args.length)return!0}}if(n.variadicArg){if(t>=e.args.length&&n.variadicMin===0)return!0;if(n.variadicMin>0&&t+n.variadicMin>e.args.length)return!1;for(;t<e.args.length;){if(!A(n.variadicArg.type,e.args[t].type))return!1;t+=1}}}return!0}if(e.kind==="record"&&n.kind==="record"){for(let t of Object.keys(n.elements))if(!(t in e.elements)||!A(e.elements[t],n.elements[t]))return!1;return!0}if(e.kind==="dictionary"&&n.kind==="dictionary")return A(e.values,n.values);if(n.kind==="indexed_collection")return e.kind==="indexed_collection"||e.kind==="list"?A(e.elements,n.elements):e.kind==="tuple"?e.elements.every(t=>A(t.type,n.elements)):!1;if(n.kind==="collection"){if(e.kind==="collection"||e.kind==="indexed_collection"||e.kind==="list")return A(e.elements,n.elements);if(e.kind==="tuple")return e.elements.every(t=>A(t.type,n.elements));if(e.kind==="set")return A(e.elements,n.elements);if(e.kind==="dictionary")return A({kind:"tuple",elements:[{type:"string"},{type:e.values}]},n.elements);if(e.kind==="record")return A({kind:"tuple",elements:[{type:"string"},{type:Ee(...Object.values(e.elements))}]},n.elements)}if(e.kind==="tuple"&&n.kind==="tuple"){if(e.elements.length!==n.elements.length)return!1;for(let t=0;t<e.elements.length;t++){let i=e.elements[t],r=n.elements[t];if(!A(i.type,r.type)||i.name!==r.name)return!1}return!0}if(n.kind==="list"&&e.kind==="list"){if(!A(e.elements,n.elements))return!1;if(n.dimensions){if(!e.dimensions||e.dimensions.length!==n.dimensions.length)return!1;for(let t=0;t<e.dimensions.length;t++)if(n.dimensions[t]!==-1&&e.dimensions[t]!==n.dimensions[t])return!1}return!0}if(e.kind==="symbol"&&n.kind==="symbol")return e.name===n.name;if(e.kind==="numeric"&&n.kind==="numeric")return!(!A(e.type,n.type)||(e.lower??-1/0)<(n.lower??-1/0)||(e.upper??1/0)>(n.upper??1/0));if(n.kind==="set"&&e.kind==="set")return!!A(e.elements,n.elements);if(e.kind==="negation"&&n.kind==="negation")return A(e.type,n.type);if(n.kind==="negation")return!A(e,n.type);if(n.kind==="value"&&e.kind==="value")return n.value===e.value;if(e.kind==="value"){if(typeof e.value=="boolean")return A("boolean",n);if(typeof e.value=="number")return Number.isInteger(e.value)?A("integer",n):A("real",n);if(typeof e.value=="string")return A("string",n)}return!1}function Ea(e){return typeof e=="string"?Kt.has(e):e.kind==="value"?typeof e.value=="number":e.kind==="numeric"}function Na(e){return Ea(e)?!0:typeof e=="string"?fa.has(e):e.kind==="value"?["string","boolean","number"].includes(typeof e.value):!1}function Ta(e){return _a(e)?!0:typeof e=="string"?ca.has(e):["collection","set","record","dictionary"].includes(e.kind)}function _a(e){return typeof e=="string"?!1:["indexed_collection","list","tuple"].includes(e.kind)}function Ia(e){return Na(e)||Ta(e)}function Sa(e){return e==="function"||typeof e!="string"&&e.kind==="signature"}function uf(e){return typeof e=="string"&&["expression","symbol","function"].includes(e)||Ia(e)||Sa(e)||mr(e)?!0:typeof e=="string"?!1:e.kind==="expression"}function mr(e){return e==="symbol"?!0:typeof e=="string"?!1:e.kind==="symbol"?!0:e.kind==="expression"?e.operator==="Symbol":!1}function lf(e,n){return e===n?e:e==="nothing"||n==="nothing"?"nothing":e==="any"?n:n==="any"?e:e==="never"?n:n==="never"?e:e==="unknown"?n:n==="unknown"||A(e,n)?e:A(n,e)?n:"never"}function cf(e,n){if(e===n)return e;if(e==="any"||n==="any")return"any";if(e==="never")return n;if(n==="never")return e;if(e==="unknown")return n;if(n==="unknown")return e;if(e==="nothing")return n;if(n==="nothing")return e;if(A(e,n))return n;if(A(n,e))return e;let t=mf(e,n);return ff.has(t)?pf(e,n):t}var ff=new Set(["scalar","value","function","expression","collection","indexed_collection","list","set","tuple","record","dictionary","map","any"]);function pf(e,n){let t=[],i=new Set,r=s=>{if(typeof s=="object"&&s.kind==="union"){for(let a of s.types)r(a);return}let o=typeof s=="string"?s:JSON.stringify(s);i.has(o)||(i.add(o),t.push(s))};return r(e),r(n),t.length===1?t[0]:{kind:"union",types:t}}function dr(...e){return e.length===0?"nothing":e.length===1?e[0]:e.reduce((n,t)=>lf(n,t))}function Ee(...e){return e.length===0?"nothing":e.length===1?e[0]:e.reduce((n,t)=>cf(n,t))}var ya=["non_finite_number","finite_integer","integer","finite_rational","rational","finite_real","real","imaginary","finite_complex","complex","finite_number","number","list","record","dictionary","set","tuple","indexed_collection","collection","scalar","value","function","expression"],xa=new Map;function mf(e,n){if(e===n)return e;if(e==="any"||n==="any")return"any";if(e==="never")return n;if(n==="never")return e;if(e==="unknown")return n;if(n==="unknown")return e;if(e==="nothing")return n;if(n==="nothing")return e;if(typeof e=="string"&&typeof n=="string"){let t=e<n?`${e}|${n}`:`${n}|${e}`,i=xa.get(t);if(i===void 0){i="any";for(let r of ya){let s=ft[r];if(s.has(e)&&s.has(n)){i=r;break}}xa.set(t,i)}return i}for(let t of ya)if(A(e,t)&&A(n,t))return t;return"any"}var Ma=3,wa=1,Aa=2,df=4,hf=5,gf=6,bf=7,yf=8,xf=9,vf=10,Ef=11;function G(e,n=0){if(typeof e=="string")return e;let t="";switch(e.kind){case"value":typeof e.value=="string"?t=`"${e.value}"`:typeof e.value=="boolean"?t=e.value?"true":"false":t=e.value.toString();break;case"reference":t=e.name;break;case"negation":t=`!${G(e.type,Ma)}`;break;case"union":t=e.types.map(u=>G(u,wa)).join(" | ");break;case"intersection":t=e.types.map(u=>G(u,Aa)).join(" & ");break;case"expression":t=`expression<${ka(e.operator)}>`;break;case"symbol":t=`symbol<${ka(e.name)}>`;break;case"numeric":Number.isFinite(e.lower)&&Number.isFinite(e.upper)?t=`${e.type}<${e.lower}..${e.upper}>`:Number.isFinite(e.lower)?t=`${e.type}<${e.lower}..>`:Number.isFinite(e.upper)?t=`${e.type}<..${e.upper}>`:t=`${e.type}`;break;case"list":if(e.dimensions&&typeof e.elements=="string"&&Kt.has(e.elements)){if(e.dimensions===void 0)e.elements==="number"&&(t="tensor");else if(e.dimensions.length===1)e.elements==="number"?e.dimensions[0]<0?t="vector":t=`vector<${e.dimensions[0]}>`:e.dimensions[0]<0?t=`vector<${G(e.elements)}>`:t=`vector<${G(e.elements)}^${e.dimensions[0]}>`;else if(e.dimensions.length===2){let u=e.dimensions;e.elements==="number"?u[0]<0&&u[1]<0?t="matrix":t=`matrix<${u[0]}x${u[1]}>`:u[0]<0&&u[1]<0?t=`matrix<${G(e.elements)}>`:t=`matrix<${G(e.elements)}^(${u[0]}x${u[1]})>`}}if(!t){let u=e.dimensions?e.dimensions.length===1?`^${e.dimensions[0].toString()}`:`^(${e.dimensions.join("x")})`:"";t=`list<${G(e.elements)}${u}>`}break;case"record":t=`record<${Object.entries(e.elements).map(([u,l])=>`${u}: ${G(l)}`).join(", ")}>`;break;case"dictionary":t=`dictionary<${G(e.values)}>`;break;case"set":t=`set<${G(e.elements)}>`;break;case"collection":t=`collection<${G(e.elements)}>`;break;case"indexed_collection":t=`indexed_collection<${G(e.elements)}>`;break;case"tuple":if(e.elements.length===0)t="tuple";else if(e.elements.length===1){let[u]=e.elements;t=`tuple<${On(u)}>`}else t="tuple<"+e.elements.map(u=>On(u)).join(", ")+">";break;case"signature":let r=e.args?e.args.map(u=>On(u)).join(", "):"",s=e.optArgs?e.optArgs.map(u=>On(u)+"?").join(", "):"",o=e.variadicArg?e.variadicMin===0?`${On(e.variadicArg)}*`:`${On(e.variadicArg)}+`:"";t=`(${[r,s,o].filter(u=>u).join(", ")}) -> ${G(e.result)}`;break;default:t="error"}return n>0&&n>Nf(e.kind)?`(${t})`:t}function On(e){return e.name?`${e.name}: ${G(e.type)}`:G(e.type)}function ka(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)?e:`\`${e}\``}function Nf(e){switch(e){case"negation":return Ma;case"union":return wa;case"intersection":return Aa;case"list":return df;case"record":return hf;case"dictionary":return gf;case"set":return bf;case"collection":case"indexed_collection":return yf;case"tuple":return xf;case"signature":return vf;case"value":return Ef;default:return 0}}function hr(e){if(e){if(e==="function")return"any";if(typeof e!="string"&&e.kind==="signature")return e.result}}function Fe(e){if(e==="collection"||e==="indexed_collection"||e==="list"||e==="set"||e==="tuple"||e==="dictionary"||e==="record")return"any";if(typeof e!="string"){if(e.kind==="collection"||e.kind==="indexed_collection"||e.kind==="list"||e.kind==="set")return e.elements;if(e.kind==="tuple")return Ee(...e.elements.map(n=>n.type));if(e.kind==="dictionary")return K(`tuple<string, ${G(e.values)}>`);if(e.kind==="record")return K(`tuple<string, ${G(Ee(...Object.values(e.elements)))}>`)}}var de=class e{static unknown=new e("unknown");static number=new e("number");static non_finite_number=new e("non_finite_number");static finite_number=new e("finite_number");static finite_integer=new e("finite_integer");static finite_real=new e("finite_real");static string=new e("string");static dictionary=new e("dictionary");static setNumber=new e("set<number>");static setComplex=new e("set<complex>");static setImaginary=new e("set<imaginary>");static setReal=new e("set<real>");static setRational=new e("set<rational>");static setFiniteInteger=new e("set<finite_integer>");static setInteger=new e("set<integer>");type;static widen(...n){return new e(Ee(...n.map(t=>t instanceof e?t.type:t)))}static narrow(...n){return new e(dr(...n.map(t=>t instanceof e?t.type:t)))}constructor(n,t){typeof n=="string"?this.type=K(n,t):this.type=n}matches(n){return n instanceof e?A(this.type,n.type):A(this.type,n)}is(n){return A(this.type,n)&&A(n,this.type)}get isUnknown(){return this.type==="unknown"}toString(){return G(this.type)}toJSON(){return G(this.type)}[Symbol.toPrimitive](n){return n==="string"?this.toString():null}valueOf(){return G(this.type)}};function P(e){return e?._kind==="number"}function _(e,n){return e?._kind==="symbol"&&(n===void 0||e.symbol===n)}function g(e,n){return(e?._kind==="function"||e?._kind==="tensor")&&(n===void 0||e.operator===n)}function ue(e){return e?._kind==="string"}function Ca(e){return e?._kind==="dictionary"}function ie(e){return e?._kind==="symbol"?e.symbol:void 0}var Ig=Object.freeze({bySubject:new Map,membership:new Map});var Cg=[0,-1,1,Math.PI,Math.E,-Math.PI,-Math.E,.5,-.5];function Ye(e){if(!e)return;if(e.operator==="Function"&&e.isCanonical||_(e))return e;if(g(e,"BuiltinFunction"))return e.op1;if(g(e,"Delimiter")){let s=e.op1;if(g(s,"Sequence"))if(s.nops===1)e=s;else return Ye(e.engine._fn("Block",s.ops,{canonical:!1}));return Ye(g(e)?e.op1:void 0)}if(g(e,"Function"))return $a(e.engine,e.ops);e.operator;let n=e.engine,t=e.subs({_:"_1"}),i=1,r=[];for(;i<10;)t.has(`_${i}`)&&r.push(t.engine.symbol(`_${i}`,{canonical:!1})),i++;if(r.length===0){t.operator!=="Block"?t=n.function("Block",[t]):t=t.canonical;let s=t.unknowns;s.length>0&&(r=s.map(o=>n.symbol(o,{canonical:!1})))}return $a(n,[t,...r])}function $a(e,n){if(n.length===0)return;let t=n.slice(1).map(r=>_(r)?r:e.error("expected-a-symbol",r.toString()));e._pushShadowedParameters(t.filter(r=>_(r)).map(r=>r.symbol));let i;try{i=n[0].operator==="Block"?n[0].canonical:e.function("Block",[n[0]])}finally{e._popShadowedParameters()}i.isScoped;for(let r of t)_(r)&&!i.localScope.bindings.has(r.symbol)&&e.declare(r.symbol,{inferred:!0,type:"unknown"},i.localScope);return e._fn("Function",[i,...t])}function Ra(e,n){let t=e.Nothing;for(let i of n){let r=i.operator;if(r==="Return"&&g(i)){t=i.op1.evaluate();break}if((r==="Break"||r==="Continue")&&g(i)){t=e.expr([r,i.op1.evaluate()]);break}t=i.evaluate()}return t}function Pa(e,n){let t=[];for(let i of n){if(!i)continue;let r=e.bindings.get(i);r&&(t.push([i,r]),e.bindings.delete(i))}return t}function Da(e,n){for(let[t,i]of n)e.bindings.set(t,i)}function Oa(e,n,t){if(n.operator==="Function"&&g(n)){let i=n.op1;if(i&&g(i)&&i.localScope){let r=new Set(n.ops.slice(1).map(u=>_(u)?u.symbol:"").filter(u=>u)),s=new Map;for(let[u,l]of i.localScope.bindings)r.has(u)&&s.set(u,l);let o={parent:t,bindings:s},a=e._fn("Block",i.ops,{scope:o});return e._fn("Function",[a,...n.ops.slice(1)])}return n}if(g(n)&&n.ops.length>0){let i=!1,r=n.ops.map(s=>{let o=Oa(e,s,t);return o!==s&&(i=!0),o});if(i)return e._fn(n.operator,r)}return n}function Fa(e,n){return t=>{e._enterRecursion();try{return n(t)}finally{e._exitRecursion()}}}function Sf(e){let n=e.engine;if(_(e)){let u=e.symbol;return l=>n.function(u,l).evaluate()}let t=Ye(e);if(!t)throw new Error("Invalid function literal");e=t,e.operator,e.isCanonical;let i=e;if(i.ops.length===1)return i.ops[0],Fa(n,()=>i.ops[0].evaluate());let[r,...s]=i.ops;if(r.isScoped,!r.localScope)throw new Error("Function body must be a scoped Block expression");let o=r;return Fa(n,u=>{if(u.length>s.length)throw new Error(`Too many arguments for function "${e.toString()}": expected ${s.length}, got ${u.length}`);if(n.strict&&!u.every(N=>N.isValid))return;if(u.length<s.length){let N=new Set([...r.symbols,...s.map(X=>_(X)?X.symbol:"")]),k=s.slice(u.length).map((X,ae)=>{let ye=`_${ae+1}`,hn=0;for(;N.has(ye);)ye=`_${ae+1}_${hn++}`;return N.add(ye),n.symbol(ye,{canonical:!1})}),$=Object.fromEntries(s.slice(u.length).map((X,ae)=>[_(X)?X.symbol:"",k[ae]])),L=u.map(X=>X.evaluate()),D={parent:o.localScope.parent??n.context.lexicalScope,bindings:new Map};for(let X=0;X<u.length;X++){let ae=s[X],ye=_(ae)?ae.symbol:"";ye&&n.declare(ye,{value:L[X],inferred:!0},D)}let Z=o.localScope,V=Z.parent;Z.parent=D;let q=s.slice(0,u.length).map(X=>_(X)?X.symbol:""),H=Pa(Z,q);n.pushScope(D);let fe;try{fe=Ra(n,o.ops)}finally{n.popScope(),Z.parent=V,Da(Z,H)}return n.function("Function",[fe.subs($),...k])}let l=u.map(N=>N.evaluate()),f={parent:o.localScope.parent??n.context.lexicalScope,bindings:new Map},p=s.map(N=>_(N)?N.symbol:"");for(let N=0;N<s.length;N++)p[N]&&n.declare(p[N],{value:l[N],inferred:!0},f);let d=o.localScope,b=d.parent;d.parent=f;let y=Pa(d,p);n.pushScope(f);let E;try{E=Ra(n,o.ops),E=Oa(n,E,f)}finally{n.popScope(),d.parent=b,Da(d,y)}return E.isValid?E:void 0})}function se(e){return Sf(e)??(n=>e.engine.function("Apply",[e,...n]).evaluate())}var gr=100;function ri(e){return(e.isFiniteCollection??!1)&&e.isIndexedCollection}function kf(e,n,t){if(!(e.isFiniteCollection!==!0||n.isFiniteCollection!==!0)){for(let i of e.each())if(n.contains(i)!==!0)return!1;if(t){let i=e.count;if(i===void 0)return!1;let r=n.count;if(r===void 0||i===r)return!1}return!0}}function Mf(e,n){if(g(e)){for(let t=0;t!==e.nops;t+=1)if(n(e.ops[t]))return t+1}}function si(){return{isLazy:e=>!1,count:e=>g(e)?e.nops:0,isEmpty:e=>!g(e)||e.nops===0,isFinite:e=>!0,contains:(e,n)=>g(e)?e.ops.some(t=>t.isSame(n)):!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=1,t=e.nops;return{next:()=>n===t+1?{value:void 0,done:!0}:(n+=1,{value:e.ops[n-1-1],done:!1})}},subsetOf:kf,at:(e,n)=>{if(!(typeof n!="number"||!g(e))&&(n<0&&(n=e.nops+n+1),!(n<1||n>e.nops)))return e.ops[n-1]},indexWhere:Mf,eltsgn:e=>{},elttype:e=>!g(e)||e.nops===0?"unknown":e.nops===1?e.ops[0].type.type:Ee(...e.ops.map(n=>n.type.type))}}function I(e){let n="",t="";for(let i of e)i!=null&&(typeof i=="string"&&(/[a-zA-Z]/.test(i[0])&&(t+=n),/\\[a-zA-Z]+\*?$/.test(i)?n=" ":n=""),t+=i.toString());return t}function En(e,n,t){return n.includes(e)&&(n=`{${n}}`),/^[0-9]$/.test(t)?`${n}${e}${t}`:`${n}${e}{${t}}`}var B=245,pt=260,We=270,re=275,Ne=390,Me=600;var mt=700,br=810;var Nn=[{latexTrigger:["\\not","<"],kind:"infix",associativity:"any",precedence:246,parse:"NotLess"},{name:"NotLess",latexTrigger:["\\nless"],kind:"infix",associativity:"any",precedence:246},{latexTrigger:["<"],kind:"infix",associativity:"any",precedence:245,parse:"Less"},{name:"Less",latexTrigger:["\\lt"],kind:"infix",associativity:"any",precedence:245},{latexTrigger:["<","="],kind:"infix",associativity:"any",precedence:241,parse:"LessEqual"},{name:"LessEqual",latexTrigger:["\\le"],kind:"infix",associativity:"any",precedence:241},{latexTrigger:["\\leq"],kind:"infix",associativity:"any",precedence:241,parse:"LessEqual"},{latexTrigger:["\\leqslant"],kind:"infix",associativity:"any",precedence:B+5,parse:"LessEqual"},{name:"LessNotEqual",latexTrigger:["\\lneqq"],kind:"infix",associativity:"any",precedence:B},{name:"NotLessNotEqual",latexTrigger:["\\nleqq"],kind:"infix",associativity:"any",precedence:B},{name:"LessOverEqual",latexTrigger:["\\leqq"],kind:"infix",associativity:"any",precedence:B+5},{name:"GreaterOverEqual",latexTrigger:["\\geqq"],kind:"infix",associativity:"any",precedence:B+5,parse:"GreaterEqual"},{name:"Equal",latexTrigger:["="],kind:"infix",associativity:"right",precedence:B},{latexTrigger:["*","="],kind:"infix",associativity:"right",precedence:B,parse:"StarEqual"},{name:"StarEqual",latexTrigger:["\\star","="],kind:"infix",associativity:"right",precedence:B},{name:"PlusEqual",latexTrigger:["+","="],kind:"infix",associativity:"right",precedence:B},{name:"MinusEqual",latexTrigger:["-","="],kind:"infix",associativity:"right",precedence:B},{name:"SlashEqual",latexTrigger:["/","="],kind:"infix",associativity:"right",precedence:B},{name:"EqualEqual",latexTrigger:["=","="],kind:"infix",associativity:"right",precedence:B},{name:"EqualEqualEqual",latexTrigger:["=","=","="],kind:"infix",associativity:"right",precedence:B+5},{name:"TildeFullEqual",latexTrigger:["\\cong"],kind:"infix",associativity:"right",precedence:B},{name:"NotTildeFullEqual",latexTrigger:["\\ncong"],kind:"infix",associativity:"right",precedence:B},{name:"Approx",latexTrigger:["\\approx"],kind:"infix",associativity:"right",precedence:247},{name:"NotApprox",latexTrigger:["\\not","\\approx"],kind:"infix",associativity:"right",precedence:247},{name:"ApproxEqual",latexTrigger:["\\approxeq"],kind:"infix",associativity:"right",precedence:B},{name:"NotApproxEqual",latexTrigger:["\\not","\\approxeq"],kind:"infix",associativity:"right",precedence:250},{name:"NotEqual",latexTrigger:["\\ne"],kind:"infix",associativity:"right",precedence:255},{latexTrigger:["\\neq"],kind:"infix",associativity:"right",precedence:255,parse:"NotEqual"},{name:"Unequal",latexTrigger:["!","="],kind:"infix",associativity:"right",precedence:B},{name:"GreaterEqual",latexTrigger:["\\ge"],kind:"infix",associativity:"right",precedence:242},{latexTrigger:["\\geq"],kind:"infix",associativity:"right",precedence:242,parse:"GreaterEqual"},{latexTrigger:[">","="],kind:"infix",associativity:"right",precedence:243,parse:"GreaterEqual"},{latexTrigger:["\\geqslant"],kind:"infix",associativity:"right",precedence:B+5,parse:"GreaterEqual"},{name:"GreaterNotEqual",latexTrigger:["\\gneqq"],kind:"infix",associativity:"right",precedence:B},{name:"NotGreaterNotEqual",latexTrigger:["\\ngeqq"],kind:"infix",associativity:"right",precedence:B},{latexTrigger:[">"],kind:"infix",associativity:"right",precedence:245,parse:"Greater"},{name:"Greater",latexTrigger:["\\gt"],kind:"infix",associativity:"right",precedence:245},{name:"NotGreater",latexTrigger:["\\ngtr"],kind:"infix",associativity:"right",precedence:244},{latexTrigger:["\\not",">"],kind:"infix",associativity:"right",precedence:244,parse:"NotGreater"},{name:"RingEqual",latexTrigger:["\\circeq"],kind:"infix",associativity:"right",precedence:B},{name:"TriangleEqual",latexTrigger:["\\triangleq"],kind:"infix",associativity:"right",precedence:B},{name:"DotEqual",latexTrigger:["\\doteq"],kind:"infix",associativity:"right",precedence:B+5},{name:"DotEqualDot",latexTrigger:["\\doteqdot"],kind:"infix",associativity:"right",precedence:B+5},{name:"FallingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:B+5},{name:"RisingDotEqual",latexTrigger:["\\fallingdotseq"],kind:"infix",associativity:"right",precedence:B+5},{name:"QuestionEqual",latexTrigger:["\\questeq"],kind:"infix",associativity:"right",precedence:B},{name:"MuchLess",latexTrigger:["\\ll"],kind:"infix",associativity:"right",precedence:B},{name:"MuchGreater",latexTrigger:["\\gg"],kind:"infix",associativity:"right",precedence:B},{name:"Precedes",latexTrigger:["\\prec"],kind:"infix",associativity:"right",precedence:B},{name:"Succeeds",latexTrigger:["\\succ"],kind:"infix",associativity:"right",precedence:B},{name:"PrecedesEqual",latexTrigger:["\\preccurlyeq"],kind:"infix",associativity:"right",precedence:B},{name:"SucceedsEqual",latexTrigger:["\\curlyeqprec"],kind:"infix",associativity:"right",precedence:B},{name:"NotPrecedes",latexTrigger:["\\nprec"],kind:"infix",associativity:"right",precedence:B},{name:"NotSucceeds",latexTrigger:["\\nsucc"],kind:"infix",associativity:"right",precedence:B},{name:"Between",latexTrigger:["\\between"],kind:"infix",associativity:"right",precedence:B+5}];function yr(e){return typeof e!="string"?!1:Nn.some(n=>n.name===e)}function xr(e){return typeof e!="string"?!1:["Less","LessEqual","Greater","GreaterEqual"].includes(e)}function vr(e){return typeof e!="string"?!1:["Equal","NotEqual"].includes(e)}var oi=["Error","'missing'"];function Tn(e){return!!(typeof e=="number"||Ln(e)||typeof e=="string"&&ci(e))}function Ln(e){return e!==null&&typeof e=="object"&&"num"in e}function ai(e){return e!==null&&typeof e=="object"&&"sym"in e}function Va(e){return e!==null&&typeof e=="object"&&"str"in e}function qa(e){return e!==null&&typeof e=="object"&&"dict"in e&&typeof e.dict=="object"&&!Array.isArray(e.dict)&&e.dict!==null}function Bn(e){return e!==null&&typeof e=="object"&&"fn"in e&&Array.isArray(e.fn)&&e.fn.length>0&&typeof e.fn[0]=="string"}function j(e){return e==null?null:typeof e=="object"&&"str"in e?e.str:typeof e!="string"?null:e.length>=2&&e.at(0)==="'"&&e.at(-1)==="'"?e.substring(1,e.length-1):ci(e)||_r(e)?null:e}function Nr(e){if(e==null||j(e)!==null)return null;let n=v(e);return n?[n,...S(e).map(t=>Nr(t)).filter(t=>t!==null)]:e}function v(e){return Array.isArray(e)?e[0]:e==null?"":Bn(e)?e.fn[0]:""}function S(e){return Array.isArray(e)?e.slice(1):e!==void 0&&Bn(e)?e.fn.slice(1):[]}function m(e,n){return Array.isArray(e)?e[n]??null:e===null||!Bn(e)?null:e.fn[n]??null}function ne(e){return e==null?0:Array.isArray(e)?Math.max(0,e.length-1):Bn(e)?Math.max(0,e.fn.length-1):0}function Tr(e){return e==null?null:v(e)==="Hold"?m(e,1):e}function w(e){return typeof e=="string"&&_r(e)?e.length>=2&&e.at(0)==="`"&&e.at(-1)==="`"?e.slice(1,-1):e:e==null?null:ai(e)?e.sym:null}function La(e){let n=v(e);if(n==="KeyValuePair"||n==="Tuple"||n==="Pair"){let[t,i]=S(e),r=j(t);return r?[r,i??"Nothing"]:null}return null}function Ja(e){if(e===null)return null;if(qa(e))return e;let n=La(e);if(n)return{dict:{[n[0]]:Ba(n[1])??"Nothing"}};if(v(e)==="Dictionary"){let t={};for(let i of S(e)){let r=La(i);r&&(t[r[0]]=Ba(r[1])??"Nothing")}return{dict:t}}return null}function ui(e){return{dict:Object.fromEntries(Object.entries(e).map(([t,i])=>[t,Er(i)??"Nothing"]))}}function $f(e){if(e=e.toLowerCase().replace(/[nd]$/,"").replace(/[\u0009-\u000d\u0020\u00a0]/g,""),e==="nan")return NaN;if(/^(infinity|\+infinity|oo|\+oo)$/i.test(e))return 1/0;if(/^(-infinity|-oo)$/.test(e))return-1/0;if(/\([0-9]+\)/.test(e)){let[n,t,i,r]=e.match(/(.+)\(([0-9]+)\)(.*)$/)??[];e=t+i.repeat(Math.ceil(16/i.length))+(r??"")}return parseFloat(e)}function F(e){return typeof e=="number"?e:typeof e=="string"&&ci(e)?$f(e):e!==void 0&&Ln(e)?F(e.num):null}function Vn(e){if(e==null)return null;if(w(e)==="Half")return[1,2];let n=v(e);if(!n)return null;let t=null,i=null;if(n==="Negate"){let r=Vn(S(e)[0]);if(r)return[-r[0],r[1]]}if(n==="Rational"||n==="Divide"){let[r,s]=S(e);t=F(r)??NaN,i=F(s)??NaN}if(n==="Power"){let[r,s]=S(e),o=F(s);o===1?(t=F(r),i=1):o===-1&&(t=1,i=F(r))}if(n==="Multiply"){let[r,s]=S(e);if(v(s)==="Power"){let[o,a]=S(s);F(a)===-1&&(t=F(r),i=F(o))}}return t===null||i===null?null:Number.isInteger(t)&&Number.isInteger(i)?[t,i]:null}function li(e,n){let t=null;if(Array.isArray(e)&&(t=e),Bn(e)&&(t=e.fn),t===null)return[];let i=1,r=[];for(;i<t.length;)r.push(n(t[i])),i+=1;return r}function qn(e,n,t){let i=v(n),r=v(t);return i===e&&r===e?[e,...S(n),...S(t)]:i===e?[e,...S(n),t]:r===e?[e,n,...S(t)]:[e,n,t]}function _n(e){if(e==null)return null;let n=v(e);if(n==="Delimiter"){if(e=m(e,1),e===null)return[];if(n=v(e),n!=="Sequence")return[e]}return n!=="Sequence"?null:S(e)}function Y(e){return e==null||e==="Nothing"?!0:v(e)==="Sequence"&&ne(e)===0}function Q(e){return Y(e)?oi:e}function ci(e){return/^(nan|oo|\+oo|-oo|infinity|\+infinity|-infinity)$/i.test(e)||/^[+-]?(0|[1-9][0-9]*)(\.[0-9]+)?(\([0-9]+\))?([eE][+-]?[0-9]+)?$/.test(e)}function _r(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)||e.length>=2&&e[0]==="`"&&e[e.length-1]==="`"}function Er(e){if(typeof e=="string")return{str:e};if(typeof e=="number")return{num:e.toString()};if(typeof e=="boolean")return e?"True":"False";if(Array.isArray(e))return["List",...e.map(n=>Er(n)??"Nothing")];if(e===null)return null;if(typeof e=="object"){let n={};for(let t in e)n[t]=Er(e[t])??"Nothing";return{dict:n}}return Bn(e)||ai(e)||Ln(e)||Va(e)||qa(e)?e:null}function Ba(e){return e==null?null:Va(e)?e.str:Ln(e)?parseFloat(e.num):ai(e)?e.sym:typeof e=="string"||typeof e=="number"?e:Array.isArray(e)?{fn:e}:e}var Ga=[{name:"True",kind:"symbol",latexTrigger:["\\top"]},{kind:"symbol",latexTrigger:"\\mathrm{True}",parse:"True"},{kind:"symbol",latexTrigger:"\\operatorname{True}",parse:"True"},{kind:"symbol",latexTrigger:"\\mathsf{T}",parse:"True"},{name:"False",kind:"symbol",latexTrigger:["\\bot"]},{kind:"symbol",latexTrigger:"\\operatorname{False}",parse:"False"},{kind:"symbol",latexTrigger:"\\mathsf{F}",parse:"False"},{name:"And",kind:"infix",latexTrigger:["\\land"],precedence:235},{kind:"infix",latexTrigger:["\\wedge"],parse:"And",precedence:235},{kind:"infix",latexTrigger:"\\&",parse:"And",precedence:235},{kind:"infix",latexTrigger:"\\operatorname{and}",parse:"And",precedence:235},{name:"Or",kind:"infix",latexTrigger:["\\lor"],precedence:230},{kind:"infix",latexTrigger:["\\vee"],parse:"Or",precedence:230},{kind:"infix",latexTrigger:"\\parallel",parse:"Or",precedence:230},{kind:"infix",latexTrigger:"\\operatorname{or}",parse:"Or",precedence:230},{name:"Xor",kind:"infix",latexTrigger:["\\veebar"],precedence:232},{name:"Not",kind:"prefix",latexTrigger:["\\lnot"],precedence:880},{kind:"prefix",latexTrigger:["\\neg"],parse:"Not",precedence:880},{name:"Nand",kind:"infix",latexTrigger:["\\barwedge"],precedence:232},{name:"Nor",kind:"infix",latexTrigger:["\u22BD"],precedence:232},{kind:"function",symbolTrigger:"and",parse:"And"},{kind:"function",symbolTrigger:"or",parse:"Or"},{kind:"function",symbolTrigger:"not",parse:"Not"},{name:"Implies",kind:"infix",precedence:220,associativity:"right",latexTrigger:["\\implies"],serialize:"\\implies"},{latexTrigger:["\\Rightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{latexTrigger:["\\rightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{latexTrigger:["\\Longrightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{latexTrigger:["\\longrightarrow"],kind:"infix",precedence:220,associativity:"right",parse:"Implies"},{latexTrigger:["=",">"],kind:"infix",precedence:220,associativity:"right",parse:(e,n,t)=>{if(e.options.strict!==!1)return null;let i=e.parseExpression({...t,minPrec:220});return i===null?null:["Implies",n,i]}},{name:"Equivalent",latexTrigger:["\\iff"],kind:"infix",associativity:"right",precedence:219},{latexTrigger:["\\Leftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["\\leftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["\\Longleftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["\\longleftrightarrow"],kind:"infix",associativity:"right",precedence:219,parse:"Equivalent"},{latexTrigger:["<","=",">"],kind:"infix",precedence:219,associativity:"right",parse:(e,n,t)=>{if(e.options.strict!==!1)return null;let i=e.parseExpression({...t,minPrec:219});return i===null?null:["Equivalent",n,i]}},{latexTrigger:["\\equiv"],kind:"infix",associativity:"right",precedence:219,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:219}),r=e.index,s=e.parseExpression({...t,minPrec:219});return s!==null&&v(s)==="Mod"?["Congruent",n,i,Q(m(s,1))]:(e.index=r,["Equivalent",n,Q(i)])}},{name:"Proves",kind:"infix",latexTrigger:["\\vdash"],precedence:220,associativity:"right",serialize:"\\vdash"},{name:"Entails",kind:"infix",latexTrigger:["\\vDash"],precedence:220,associativity:"right",serialize:"\\vDash"},{name:"Satisfies",kind:"infix",latexTrigger:["\\models"],precedence:220,associativity:"right",serialize:"\\models"},{name:"ForAll",kind:"prefix",latexTrigger:["\\forall"],precedence:200,serialize:dt("\\forall"),parse:on("ForAll")},{name:"Exists",kind:"prefix",latexTrigger:["\\exists"],precedence:200,serialize:dt("\\exists"),parse:on("Exists")},{name:"ExistsUnique",kind:"prefix",latexTrigger:["\\exists","!"],precedence:200,serialize:dt("\\exists!"),parse:on("ExistsUnique")},{name:"NotForAll",kind:"prefix",latexTrigger:["\\lnot","\\forall"],precedence:200,serialize:dt("\\lnot\\forall"),parse:on("NotForAll")},{name:"NotExists",kind:"prefix",latexTrigger:["\\lnot","\\exists"],precedence:200,serialize:dt("\\lnot\\exists"),parse:on("NotExists")},{name:"KroneckerDelta",kind:"prefix",latexTrigger:["\\delta","_"],precedence:200,serialize:(e,n)=>{let t=S(n);return t.length===0?"\\delta":t.every(i=>w(i))?`\\delta_{${t.map(i=>e.serialize(i)).join("")}}`:`\\delta_{${t.map(i=>e.serialize(i)).join(", ")}}`},parse:e=>{let n=e.parseGroup();if(n===null){let i=e.parseToken();return i?["KroneckerDelta",i]:null}let t=_n(n);return t&&t.length<=2?["KroneckerDelta",...t]:v(n)==="InvisibleOperator"?["KroneckerDelta",...S(n)]:n!==null?["KroneckerDelta",n]:null}},{name:"Boole",kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:(e,n)=>{let t=v(n);return!t||!Nn.some(i=>i.name===t)?null:["Boole",n]}},{kind:"matchfix",openTrigger:"\\llbracket",closeTrigger:"\\rrbracket",parse:(e,n)=>{let t=v(n);return!t||!Nn.some(i=>i.name===t)?null:["Boole",n]}},{name:"Predicate",serialize:(e,n)=>{let t=S(n);if(t.length===0)return"";let i=t[0],r=typeof i=="string"?i:e.serialize(i);if(t.length===1)return r;let s=t.slice(1).map(o=>e.serialize(o));return`${r}(${s.join(", ")})`}}];function dt(e){return(n,t)=>{let i=S(t);if(i.length===0)return e;if(i.length===1)return`${e} ${n.serialize(i[0])}`;let r=n.serialize(i[0]),s=n.serialize(i[1]);return`${e} ${r}, ${s}`}}function za(e,n){return e.peek==="\\to"||e.peek==="\\rightarrow"||e.peek==="\\implies"||e.peek==="\\Rightarrow"||e.peek==="\\iff"||e.peek==="\\Leftrightarrow"||e.peek==="\\land"||e.peek==="\\wedge"||e.peek==="\\lor"||e.peek==="\\vee"||(n?.condition?.(e)??!1)}function on(e){return(n,t)=>{let i=n.index,r=n.options.quantifierScope!=="loose",s=n.parseSymbol(t);if(s){if(n.skipSpace(),n.match(",")||n.match("\\mid")||n.match(".")||n.match(":")||n.match("\\colon")){let l=r?{...t,condition:f=>za(f,t)}:t;n.enterQuantifierScope();let c=n.parseExpression(l);return n.exitQuantifierScope(),[e,s,Q(c)]}n.enterQuantifierScope();let u=n.parseEnclosure();if(n.exitQuantifierScope(),u)return[e,s,Q(u)]}n.index=i;let o={...t,condition:u=>u.peek===":"||u.peek==="\\colon"||(t?.condition?.(u)??!1)},a=n.parseExpression(o);if(a===null)return null;if(n.skipSpace(),n.matchAny([",","\\mid",":","\\colon"])){let u=r?{...t,condition:c=>za(c,t)}:t;n.enterQuantifierScope();let l=n.parseExpression(u);return n.exitQuantifierScope(),[e,a,Q(l)]}if(n.match("(")){n.enterQuantifierScope();let u=n.parseExpression(t);return n.exitQuantifierScope(),n.match(")")?[e,a,Q(u)]:null}return null}}var Rf={x:"First",y:"Second",z:"Third",real:"Real",re:"Real",imag:"Imaginary",im:"Imaginary",count:"Length",total:"Sum",max:"Max",min:"Min"};function Ir(e){return Rf[e]??null}function Pf(e,n){if(e.skipVisualSpace(),e.match("\\operatorname")){let i=e.parseStringGroup();if(i===null)return null;let r=Ir(i.trim());return r===null?null:[r,n]}let t=e.peek;if(typeof t=="string"&&t.startsWith("\\")){let i=t.slice(1),r=Ir(i);return r!==null?(e.nextToken(),[r,n]):null}if(typeof t=="string"&&/^[a-zA-Z]$/.test(t)){let i=w(n);if(i!==null&&e.getSymbolType(i).matches("dictionary")){let s="";for(;typeof e.peek=="string"&&/^[a-zA-Z]$/.test(e.peek);)s+=e.nextToken();return["At",n,{str:s}]}let r=Ir(t);return r===null?null:(e.nextToken(),[r,n])}return null}function ja(e,n,t){e.addBoundary(t),e.skipVisualSpace();let i=e.parseExpression({minPrec:0});return i===null||(e.skipVisualSpace(),!e.matchBoundary())?(e.removeBoundary(),null):["When",n,i]}function Sr(e,n,t,i,r){if(n&&n.minPrec>=i)return null;let s=t?[t]:["Nothing"],o=!1;for(;!o;){for(o=!0,e.skipSpace();e.match(r);)s.push("Nothing"),e.skipSpace();if(e.skipVisualSpace(),e.atTerminator(n))s.push("Nothing");else{let a=e.parseExpression({...n,minPrec:i});s.push(a??"Nothing"),o=a===null}o||(e.skipSpace(),o=!e.match(r),o||e.skipVisualSpace())}return s}function Qe(e=""){return(n,t)=>{if(!t)return"";let i=S(t);if(i.length===0)return"";if(i.length===1)return n.serialize(i[0]);e={"&":"\\&",":":"\\colon","|":"\\mvert","-":"-","\xB7":"\\cdot","\u2012":"-","\u2013":"--","\u2014":"---","\u2015":"-","\u2022":"\\bullet","\u2026":"\\ldots"}[e]??e;let r=i.reduce((s,o)=>(s.push(n.serialize(o),e),s),[]);return r.pop(),I(r)}}var Xa=[{latexTrigger:["\\placeholder"],kind:"symbol",parse:e=>{for(;e.match("<space>"););if(e.match("["))for(;!e.match("]")&&!e.atBoundary;)e.nextToken();for(;e.match("<space>"););if(e.match("<{>"))for(;!e.match("<}>")&&!e.atBoundary;)e.nextToken();return"Nothing"}},{name:"ContinuationPlaceholder",latexTrigger:["\\dots"]},{latexTrigger:["\\ldots"],parse:"ContinuationPlaceholder"},{latexTrigger:[".",".","."],parse:"ContinuationPlaceholder"},{name:"Function",latexTrigger:["\\mapsto"],kind:"infix",precedence:We,parse:(e,n,t)=>{let i=[];if(v(n)==="Delimiter"&&(n=m(n,1)??"Nothing"),v(n)==="Sequence")for(let s of S(n)){if(!w(s))return null;i.push(w(s))}else{if(!w(n))return null;i=[w(n)]}let r=e.parseExpression({minPrec:We})??"Nothing";return v(r)==="Delimiter"&&(r=m(r,1)??"Nothing"),v(r)==="Sequence"&&(r=["Block",...S(r)]),["Function",r,...i]},serialize:(e,n)=>{let t=S(n);return t.length<1?"()\\mapsto()":t.length===1?I(["()","\\mapsto",e.serialize(m(n,1))]):t.length===2?I([e.serialize(m(n,2)),"\\mapsto",e.serialize(m(n,1))]):I([e.wrapString(S(n)?.slice(1).map(i=>e.serialize(i)).join(", "),"normal"),"\\mapsto",e.serialize(m(n,1))])}},{name:"Apply",kind:"function",symbolTrigger:"apply",serialize:(e,n)=>{let t=m(n,1),i=v(t);if(i==="InverseFunction"||i==="Derivative"){let o=e.options.applyFunctionStyle(n,e.level),a=S(n).slice(1);return e.serializeFunction(t,e.dictionary.ids.get(i))+e.wrapString(a.map(u=>e.serialize(u)).join(", "),o)}let r=m(n,2);if(typeof t=="string"||!r){let o=S(n).slice(1);return e.serialize(o)}if(ne(n)===2)return I([e.wrap(t,20),"\\lhd",e.wrap(r,20)]);let s=e.options.applyFunctionStyle(n,e.level);return I(["\\operatorname{apply}",e.wrapString(e.serialize(i)+", "+e.serialize(["List",...S(n)]),s)])}},{latexTrigger:"\\lhd",kind:"infix",precedence:20,parse:"Apply"},{latexTrigger:"\\rhd",kind:"infix",precedence:20,parse:(e,n,t)=>["Apply",e.parseExpression({minPrec:21})??"Nothing",n]},{name:"EvaluateAt",openTrigger:".",closeTrigger:"|",kind:"matchfix",serialize:(e,n)=>{let t=m(n,1);if(!t)return"";let i=S(n).slice(1);if(v(t)==="Function"){let r=S(t).slice(1),s=m(t,1);if(v(s)==="Block"&&ne(s)===1&&(s=m(s,1)),r.length>0)return`\\left.\\left(${e.serialize(s)}\\right)\\right|_{${r.map((o,a)=>`${e.serialize(o)}=${e.serialize(i[a])}`).join(", ")}}`}return`\\left.\\left(${e.serialize(t)}\\right)\\right|_{${i.map(r=>e.serialize(r)).join(", ")}}`}},{name:"Assign",latexTrigger:"\\coloneq",kind:"infix",associativity:"right",precedence:pt,serialize:(e,n)=>{let t=Tr(m(n,1));if(v(m(n,2))==="Function"){let i=m(n,2),r=Tr(m(i,1)),s=S(i).slice(1);return I([e.serialize(t),e.wrapString(s.map(o=>e.serialize(o)).join(", "),e.options.applyFunctionStyle(n,e.level)),"\\coloneq",e.serialize(r)])}return I([e.serialize(t),"\\coloneq",e.serialize(m(n,2))])},parse:pi},{latexTrigger:"\\coloneqq",kind:"infix",associativity:"right",precedence:pt,parse:pi},{latexTrigger:"\\colonequals",kind:"infix",associativity:"right",precedence:pt,parse:pi},{latexTrigger:[":","="],kind:"infix",associativity:"right",precedence:pt,parse:pi},{name:"Colon",latexTrigger:":",kind:"infix",associativity:"right",precedence:240,serialize:(e,n)=>I([e.serialize(m(n,1)),"\\colon",e.serialize(m(n,2))])},{latexTrigger:"\\colon",kind:"infix",associativity:"right",precedence:240,parse:"Colon"},{name:"BaseForm",serialize:(e,n)=>{let t=F(m(n,2))??NaN;if(isFinite(t)&&t>=2&&t<=36){let i=F(m(n,1))??NaN;if(isFinite(i)&&Number.isInteger(i)){let r=Number(i).toString(t),s=0;if(t===2||t===10?s=4:t===16?s=2:t>16&&(s=4),s>0){let o=r;r="";for(let a=0;a<o.length;a++)a>0&&a%s===0&&(r="\\, "+r),r=o[o.length-a-1]+r}return`(\\text{${r}}_{${t}}`}}return"\\operatorname{BaseForm}("+e.serialize(m(n,1))+", "+e.serialize(m(n,2))+")"}},{name:"Sequence",serialize:Qe(" ")},{name:"InvisibleOperator",serialize:Qe("")},{name:"Delimiter",serialize:(e,n)=>{let t=e.options.groupStyle(n,e.level+1),i=m(n,1),r={Set:"{,}",List:"[,]",Tuple:"(,)",Single:"(,)",Pair:"(,)",Triple:"(,)",Sequence:"(,)",String:'""'}[v(i)],s=r?i:["Sequence",i];if(r??="(,)",ne(n)>1){let c=j(m(n,2));typeof c=="string"&&c.length<=3&&(r=c)}let[o,a,u]=["","",""];r.length===3?[o,a,u]=r:r.length===2?[o,u]=r:r.length===1&&(a=r);let l=i?s?Qe(a)(e,s):e.serialize(i):"";return e.wrapString(l,t,o+u)}},{name:"Tuple",serialize:(e,n)=>I(["(",Qe(",")(e,n),")"])},{name:"Pair",serialize:(e,n)=>I(["(",Qe(",")(e,n),")"])},{name:"Triple",serialize:(e,n)=>I(["(",Qe(",")(e,n),")"])},{name:"Single",serialize:(e,n)=>I(["(",Qe(",")(e,n),")"])},{name:"Domain",serialize:(e,n)=>v(n)==="Error"?e.serialize(n):`\\mathbf{${e.serialize(m(n,1))}}`},{latexTrigger:["\\mathtip"],parse:e=>{let n=e.parseGroup();return e.parseGroup(),n}},{latexTrigger:["\\texttip"],parse:e=>{let n=e.parseGroup();return e.parseGroup(),n}},{latexTrigger:["\\error"],parse:e=>["Error",e.parseGroup()]},{name:"Error",serialize:(e,n)=>{let t=m(n,1);if(j(t)==="missing")return`\\error{${e.options.missingSymbol??"\\placeholder{}"}}`;let i=Ff(e,n)||"\\blacksquare",r=v(t)==="ErrorCode"?j(m(t,1)):j(t);return r==="incompatible-type"?w(m(t,3))==="Undefined"?`\\mathtip{\\error{${i}}}{\\notin ${e.serialize(m(t,2))}}`:`\\mathtip{\\error{${i}}}{\\in ${e.serialize(m(t,3))}\\notin ${e.serialize(m(t,2))}}`:typeof r=="string"?`\\error{${i}}`:`\\error{${i}}`}},{name:"ErrorCode",serialize:(e,n)=>{let t=j(m(n,1));return t==="missing"?e.options.missingSymbol??"\\placeholder{}":t==="unexpected-command"||t==="unexpected-operator"||t==="unexpected-token"||t==="invalid-symbol"||t==="unknown-environment"||t==="unexpected-base"||t==="incompatible-type"?"":`\\texttip{\\error{\\blacksquare}}{\\mathtt{${t}}}`}},{name:"FromLatex",serialize:(e,n)=>`\\texttt{${Ha(j(m(n,1)))}}`},{name:"Latex",serialize:(e,n)=>n===null?"":I(li(n,t=>j(t)??e.serialize(t)))},{name:"LatexString",serialize:(e,n)=>n===null?"":I(li(n,t=>e.serialize(t)))},{name:"LatexTokens",serialize:Df},{kind:"postfix",precedence:850,latexTrigger:["."],parse:Pf},{name:"At",kind:"postfix",precedence:810,latexTrigger:["["],parse:Mr("]"),serialize:(e,n)=>{let t=S(n),i=e.serialize(t[0]??"Nothing"),r=t.slice(1).map(s=>e.serialize(s));return e.indexStyle(n,e.level)==="bracket"?I([i,"[",r.join(", "),"]"]):En("_",i,r.join(","))}},{kind:"postfix",precedence:810,latexTrigger:["\\lbrack"],parse:Mr("\\rbrack")},{kind:"postfix",precedence:810,latexTrigger:["\\left","\\lbrack"],parse:Mr("\\right","\\rbrack")},{name:"When",kind:"postfix",precedence:800,latexTrigger:["\\left","\\{"],parse:(e,n)=>ja(e,n,["\\right","\\}"]),serialize:(e,n)=>{let t=m(n,1),i=m(n,2);if(!t||!i)return"";let s=(v(i)==="And"?S(i)??[]:[i]).map(o=>`\\left\\{${e.serialize(o)}\\right\\}`).join("");return`${e.serialize(t)}${s}`}},{kind:"postfix",precedence:800,latexTrigger:["\\{"],parse:(e,n)=>ja(e,n,["\\}"])},{kind:"postfix",latexTrigger:["_"],parse:(e,n,t)=>{let i=e.parseGroup()??e.parseToken();i===null&&e.options.strict===!1&&e.peek==="("&&(i=e.parseEnclosure());let r=w(n);return i!==null&&(r&&e.getSymbolType(r).matches("indexed_collection")||v(n)==="List")?(v(i)==="Delimiter"&&(i=m(i,1)??"Nothing"),v(i)==="Sequence"?["At",n,...S(i)]:["At",n,i]):["Subscript",n,i]}},{name:"List",kind:"matchfix",openTrigger:"[",closeTrigger:"]",parse:Qa,serialize:Lf},{kind:"matchfix",openTrigger:"(",closeTrigger:")",parse:Of},{latexTrigger:[","],kind:"infix",precedence:20,parse:(e,n,t)=>{let i=Sr(e,t,n,20,",");return i===null?null:["Delimiter",["Sequence",...i],{str:","}]}},{latexTrigger:[","],kind:"prefix",precedence:20,parse:(e,n)=>{let t=Sr(e,n,null,20,",");return t===null?null:["Delimiter",["Sequence",...t],{str:","}]}},{name:"Range",latexTrigger:[".","."],kind:"infix",precedence:800,parse:fi,serialize:(e,n)=>{let t=S(n);if(t.length===0)return"";if(t.length===1)return"1.."+e.serialize(m(n,1));if(t.length===2)return e.wrap(m(n,1),10)+".."+e.wrap(m(n,2),10);if(t.length===3){let i=F(m(n,3)),r=F(m(n,1));return i!==null&&r!==null?e.wrap(m(n,1),10)+".."+e.wrap(r+i,10)+".."+e.wrap(m(n,2),10):e.wrap(m(n,1),10)+"..("+(e.wrap(m(n,1),re)+"+"+e.wrap(m(n,3),re))+").."+e.wrap(m(n,2),10)}return""}},{latexTrigger:[".",".","."],kind:"infix",precedence:800,parse:fi},{latexTrigger:["\\ldots"],kind:"infix",precedence:800,parse:fi},{latexTrigger:["\\dots"],kind:"infix",precedence:800,parse:fi},{latexTrigger:[";"],kind:"infix",precedence:19,parse:(e,n,t)=>{let i=Sr(e,t,n,19,";");return i===null?null:i.some(r=>v(r)==="Assign")?Bf(i):["Delimiter",["Sequence",...i],"';'"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"none",precedence:21,parse:(e,n,t)=>{let i=e.index;return Te(e,"where")?Wa(e,n,t):(e.index=i,null)}},{symbolTrigger:"where",kind:"infix",associativity:"none",precedence:21,parse:(e,n,t)=>Wa(e,n,t)},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:235,parse:(e,n,t)=>{let i=e.index;if(!Te(e,"and"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:235});return["And",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:230,parse:(e,n,t)=>{let i=e.index;if(!Te(e,"or"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:230});return["Or",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:219,parse:(e,n,t)=>{let i=e.index;if(!Te(e,"iff"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:219});return["Equivalent",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:219,parse:(e,n,t)=>{let i=e.index;if(!Te(e,"if and only if"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:219});return["Equivalent",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"infix",associativity:"right",precedence:21,parse:(e,n,t)=>{let i=e.index;if(!Te(e,"such that"))return e.index=i,null;let r=e.parseExpression({...t,minPrec:21});return["Colon",n,r??"Nothing"]}},{latexTrigger:["\\text"],kind:"prefix",precedence:200,parse:(e,n)=>{let t=e.index;return Te(e,"for all")?on("ForAll")(e,n):(e.index=t,null)}},{latexTrigger:["\\text"],kind:"prefix",precedence:200,parse:(e,n)=>{let t=e.index;return Te(e,"there exists")?on("Exists")(e,n):(e.index=t,null)}},{name:"Block",serialize:(e,n)=>{let t=S(n);return!t||t.length===0?"":t.filter(r=>v(r)!=="Declare").map(r=>e.serialize(r)).join("; ")}},{name:"If",serialize:(e,n)=>{let t=S(n);return!t||t.length<3?"":I(["\\text{if }",e.serialize(t[0]),"\\text{ then }",e.serialize(t[1]),"\\text{ else }",e.serialize(t[2])])}},{name:"Loop",serialize:(e,n)=>{let t=S(n);if(!t||t.length<2)return"";let i=t[0],r=t.slice(1);if(!r.every(a=>v(a)==="Element"))return I(["\\operatorname{Loop}(",e.serialize(i),", ",e.serialize(r[0]),")"]);if(r.length===1){let a=r[0],u=m(a,1),l=m(a,2);if(v(l)==="Range"){let c=m(l,1),f=m(l,2);return I(["\\text{for }",e.serialize(u),"\\text{ from }",e.serialize(c),"\\text{ to }",e.serialize(f),"\\text{ do }",e.serialize(i)])}return I([e.serialize(i)," \\operatorname{for} ",e.serialize(u)," = ",e.serialize(l)])}let o=r.map(a=>{let u=m(a,1),l=m(a,2);return I([e.serialize(u)," = ",e.serialize(l)])}).join(", ");return I([e.serialize(i)," \\operatorname{for} ",o])}},{name:"Break",serialize:()=>"\\text{break}"},{name:"Continue",serialize:()=>"\\text{continue}"},{name:"Return",serialize:(e,n)=>{let t=m(n,1);return!t||w(t)==="Nothing"?"\\text{return}":I(["\\text{return }",e.serialize(t)])}},{symbolTrigger:"if",kind:"prefix",precedence:245,parse:(e,n)=>Za(e,n)},{symbolTrigger:"for",kind:"prefix",precedence:245,parse:(e,n)=>Ya(e,n)},{symbolTrigger:"for",kind:"infix",associativity:"none",precedence:19,parse:(e,n,t)=>Ka(e,n,t)},{symbolTrigger:"break",kind:"prefix",precedence:245,parse:()=>["Break"]},{symbolTrigger:"continue",kind:"prefix",precedence:245,parse:()=>["Continue"]},{symbolTrigger:"return",kind:"prefix",precedence:245,parse:(e,n)=>["Return",e.parseExpression(n)??"Nothing"]},{name:"Text",serialize:(e,n)=>{let t=S(n);if(t.length===0)return"";let i=-1,r=-1;for(let a=0;a<t.length;a++)j(t[a])!==null&&(i<0&&(i=a),r=a);if(i<0)return I(t.map(a=>e.serialize(a)));let s=[];for(let a=0;a<i;a++)s.push(e.serialize(t[a]));let o="";for(let a=i;a<=r;a++){let u=j(t[a]);u!==null?o+=Ha(u):v(t[a])==="Annotated"||v(t[a])==="Text"?o+=e.serialize(t[a]):o+="$"+e.serialize(t[a])+"$"}s.push("\\text{"+o+"}");for(let a=r+1;a<t.length;a++)s.push(e.serialize(t[a]));return I(s)}},{name:"String",latexTrigger:["\\text"],parse:(e,n)=>{let t=e.index;return Te(e,"if")?Za(e,n):(e.index=t,Te(e,"for")?Ya(e,n):(e.index=t,Te(e,"break")?["Break"]:(e.index=t,Te(e,"continue")?["Continue"]:(e.index=t,Te(e,"return")?["Return",e.parseExpression(n)??"Nothing"]:(e.index=t,Oe(e))))))},serialize:(e,n)=>{let t=S(n);return t.length===0?"\\text{}":I(["\\text{",t.map(i=>e.serialize(i)).join(""),"}"])}},{name:"Subscript",latexTrigger:["_"],kind:"infix",serialize:(e,n)=>ne(n)===2?e.serialize(m(n,1))+"_{"+e.serialize(m(n,2))+"}":"_{"+e.serialize(m(n,1))+"}"},{name:"Superplus",latexTrigger:["^","+"],kind:"postfix"},{name:"Subplus",latexTrigger:["_","+"],kind:"postfix"},{name:"Superminus",latexTrigger:["^","-"],kind:"postfix",parse:(e,n)=>e.options.strict===!1&&/^[0-9]$/.test(e.peek)?null:["Superminus",n]},{name:"Subminus",latexTrigger:["_","-"],kind:"postfix"},{latexTrigger:["^","*"],kind:"postfix",parse:(e,n)=>["Superstar",n]},{latexTrigger:["_","*"],kind:"postfix",parse:(e,n)=>["Substar",n]},{name:"Substar",latexTrigger:["_","\\star"],kind:"postfix"},{name:"Superdagger",latexTrigger:["^","\\dagger"],kind:"postfix"},{latexTrigger:["^","\\dag"],kind:"postfix",parse:(e,n)=>["Superdagger",n]},{name:"Prime",latexTrigger:["^","\\prime"],kind:"postfix",parse:(e,n)=>Xe(e,n,1),serialize:(e,n)=>{let t=F(m(n,2))??1,i=e.serialize(m(n,1));return t===1?i+"^\\prime":t===2?i+"^\\doubleprime":t===3?i+"^\\tripleprime":i+"^{("+e.serialize(m(n,2))+")}"}},{latexTrigger:"^{\\prime\\prime}",kind:"postfix",parse:(e,n)=>Xe(e,n,2)},{latexTrigger:"^{\\prime\\prime\\prime}",kind:"postfix",parse:(e,n)=>Xe(e,n,3)},{latexTrigger:["^","\\doubleprime"],kind:"postfix",parse:(e,n)=>Xe(e,n,2)},{latexTrigger:["^","\\tripleprime"],kind:"postfix",parse:(e,n)=>Xe(e,n,3)},{latexTrigger:"'",kind:"postfix",precedence:810,parse:(e,n)=>Xe(e,n,1)},{latexTrigger:"\\prime",kind:"postfix",precedence:810,parse:(e,n)=>Xe(e,n,1)},{latexTrigger:"\\doubleprime",kind:"postfix",precedence:810,parse:(e,n)=>Xe(e,n,2)},{latexTrigger:"\\tripleprime",kind:"postfix",precedence:810,parse:(e,n)=>Xe(e,n,3)},{latexTrigger:["^","<{>","("],kind:"postfix",parse:(e,n,t)=>{let i=w(n);if(!i||!e.getSymbolType(i).matches("function"))return null;e.addBoundary([")"]);let r=e.parseExpression(t);return e.matchBoundary()?e.match("<}>")?["Derivative",n,r]:null:(e.removeBoundary(),null)}},{name:"InverseFunction",latexTrigger:"^{-1",kind:"postfix",parse:(e,n)=>{if(v(n)==="Matrix")return e.match("<}>"),["Inverse",n];let t=w(n);if(!t)return null;let i=e.getSymbolType(t);if(i.matches(new de("matrix")))return e.match("<}>"),["Inverse",n];if(!i.matches("function"))return null;let r=0;for(;!e.atEnd&&!e.match("<}>");)if(e.match("'"))r++;else if(e.match("\\prime"))r++;else if(e.match("\\doubleprime"))r+=2;else if(e.match("\\tripleprime"))r+=3;else return null;return r===1?["Derivative",["InverseFunction",n]]:r>0?["Derivative",["InverseFunction",n],r]:["InverseFunction",n]},serialize:(e,n)=>e.serialize(m(n,1))+"^{-1}"},{name:"Derivative",serialize:(e,n)=>{let t=F(m(n,2))??1,i=e.serialize(m(n,1));return t===1?i+"^{\\prime}":t===2?i+"^{\\doubleprime}":t===3?i+"^{\\tripleprime}":i+"^{("+e.serialize(m(n,2))+")}"}},{name:"D",serialize:(e,n)=>{if(v(n)!=="D")return"D";let t=m(n,1),i=m(n,2);if(!t||!i)return"D";let r=1,s=t;for(;v(s)==="D";){let l=m(s,2);if(w(l)===w(i))r++,s=m(s,1);else break}let o=s;v(s)==="Function"&&(o=m(s,1)??s);let a=e.serialize(o),u=e.serialize(i);return r===1?`\\frac{\\mathrm{d}}{\\mathrm{d}${u}}${a}`:`\\frac{\\mathrm{d}^{${r}}}{\\mathrm{d}${u}^{${r}}}${a}`}},{name:"NewtonDerivative1",latexTrigger:["\\dot"],kind:"prefix",precedence:740,parse:e=>{let n=e.parseGroup();if(n===null)return null;let t=e.options.timeDerivativeVariable;return["D",n,t]}},{name:"NewtonDerivative2",latexTrigger:["\\ddot"],kind:"prefix",precedence:740,parse:e=>{let n=e.parseGroup();if(n===null)return null;let t=e.options.timeDerivativeVariable;return["D",["D",n,t],t]}},{name:"NewtonDerivative3",latexTrigger:["\\dddot"],kind:"prefix",precedence:740,parse:e=>{let n=e.parseGroup();if(n===null)return null;let t=e.options.timeDerivativeVariable;return["D",["D",["D",n,t],t],t]}},{name:"NewtonDerivative4",latexTrigger:["\\ddddot"],kind:"prefix",precedence:740,parse:e=>{let n=e.parseGroup();if(n===null)return null;let t=e.options.timeDerivativeVariable;return["D",["D",["D",["D",n,t],t],t],t]}},{name:"EulerDerivative",latexTrigger:["D"],kind:"expression",parse:e=>{let n=1,t=null,i=!1;for(;!i;)if(e.match("_")){if(t=e.parseGroup()??e.parseToken(),!t)return null}else if(e.match("^")){let o=e.parseGroup()??e.parseToken();n=F(o)??1}else i=!0;if(!t||w(t)===null)return null;e.skipSpace();let r=e.parseExpression({minPrec:740});if(!r)return null;let s=r;for(let o=0;o<n;o++)s=["D",s,t];return s}},{kind:"environment",name:"Which",symbolTrigger:"cases",parse:kr,serialize:(e,n)=>{let t=[],i=S(n);if(i.length>0)for(let r=0;r<=i.length-2;r+=2){let s=[];s.push(e.serialize(i[r+1])),s.push(e.serialize(i[r])),t.push(s.join("&"))}return I(["\\begin{cases}",t.join("\\\\"),"\\end{cases}"])}},{kind:"environment",symbolTrigger:"dcases",parse:kr},{kind:"environment",symbolTrigger:"rcases",parse:kr}];function Oe(e,n){if(!e.match("<{>"))return"''";let t=[],i="",r=null,s=()=>{r!==null&&i?t.push(["Annotated",`'${i}'`,ui(r)]):i&&t.push(`'${i}'`),i="",r=null};for(;!e.atEnd&&!e.match("<}>");)if(e.peek==="<{>")s(),t.push(Oe(e));else if(e.match("\\textbf"))s(),t.push(Oe(e,{fontWeight:"bold"}));else if(e.match("\\textmd"))s(),t.push(Oe(e,{fontStyle:"normal"}));else if(e.match("\\textup"))s(),t.push(Oe(e,{fontStyle:"normal"}));else if(e.match("\\textsl"))s(),t.push(Oe(e,{fontStyle:"italic"}));else if(e.match("\\textit"))s(),t.push(Oe(e,{fontStyle:"italic"}));else if(e.match("\\texttt"))s(),t.push(Oe(e,{fontFamily:"monospace"}));else if(e.match("\\textsf"))s(),t.push(Oe(e,{fontFamily:"sans-serif"}));else if(e.match("\\textcolor")){let a=e.index,u=e.parseStringGroup();if(u!==null){s();let l=Oe(e);t.push(["Annotated",l,ui({color:u})])}else e.index=a,i+="\\textcolor"}else if(e.match("\\color")){let a=e.parseStringGroup();a!==null&&(s(),r={color:a})}else if(e.match("<space>"))i+=" ";else if(e.match("<$>")){let a=e.index,u=e.parseExpression()??"Nothing";e.skipSpace(),e.match("<$>")?(s(),t.push(u)):(i+="$",e.index=a)}else if(e.match("<$$>")){let a=e.index,u=e.parseExpression()??"Nothing";e.skipSpace(),e.match("<$$>")?(s(),t.push(u)):(i+="$$",e.index=a)}else{let a=e.parseChar()??e.nextToken();i+={"\\enskip":"\u2002","\\enspace":"\u2002","\\quad":"\u2003","\\qquad":"\u2003\u2003","\\space":"\u2003","\\ ":"\u2003","\\;":"\u2004","\\,":"\u2009","\\:":"\u205F","\\!":"","\\{":"{","\\}":"}","\\$":"$","\\&":"&","\\#":"#","\\%":"%","\\_":"_","\\textbackslash":"\\","\\textasciitilde":"~","\\textasciicircum":"^","\\textless":"<","\\textgreater":">","\\textbar":"|","\\textunderscore":"_","\\textbraceleft":"{","\\textbraceright":"}","\\textasciigrave":"`","\\textquotesingle":"'","\\textquotedblleft":"\u201C","\\textquotedblright":"\u201D","\\textquotedbl":'"',"\\textquoteleft":"\u2018","\\textquoteright":"\u2019","\\textbullet":"\u2022","\\textdagger":"\u2020","\\textdaggerdbl":"\u2021","\\textsection":"\xA7","\\textparagraph":"\xB6","\\textperiodcentered":"\xB7","\\textellipsis":"\u2026","\\textemdash":"\u2014","\\textendash":"\u2013","\\textregistered":"\xAE","\\texttrademark":"\u2122","\\textdegree":"\xB0"}[a]??a}s();let o;return t.length===1?o=t[0]:t.every(a=>j(a)!==null)?o="'"+t.map(a=>j(a)).join("")+"'":o=["Text",...t],n?["Annotated",o,ui(n)]:o}function Df(e,n){return n===null?"":I(li(n,t=>{let i=j(t);return i===null?e.serialize(t):i==="<{>"?"{":i==="<}>"?"}":i==="<$>"?"$":i==="<$$>"?"$$":i==="<space>"?" ":i}))}function Ha(e){return e===null?"":e.replace(/[{}\[\]\\:\-\$%]/g,n=>({"{":"\\lbrace ","}":"\\rbrace ","[":"\\lbrack ","]":"\\rbrack ",":":"\\colon ","\\":"\\backslash "})[n]??"\\"+n)}function Ff(e,n){let t=m(n,2);return t?v(t)==="LatexString"?j(m(t,1))??"":v(t)==="Hold"?e.serialize(m(t,1)):e.serialize(t):""}function Xe(e,n,t){for(;!e.atEnd;)if(e.match("'")||e.match("\\prime"))t++;else if(e.match("\\doubleprime"))t+=2;else if(e.match("\\tripleprime"))t+=3;else break;let i=v(n);if(i==="Derivative"||i==="Prime"){let a=F(m(n,2))??1;return[i,Q(m(n,1)),a+t]}let r=w(n),s=r&&e.getSymbolType(r).matches("function")||v(n);e.skipSpace();let o=e.parseArguments("enclosure");if(o&&o.length>0){let a=o[0],u=w(a)??"x",c=typeof n=="string"?[n,...o]:["Apply",n,...o];for(let f=0;f<t;f++)c=["D",c,u];return c}return s?t===1?["Derivative",n]:["Derivative",n,t]:t===1?["Prime",Q(n)]:["Prime",Q(n),t]}function Of(e,n){if(Y(n))return["Delimiter"];let t=v(n);if(t==="Delimiter"&&m(n,2)!==null){let i=j(m(n,2));if(i?.length===1)return["Delimiter",m(n,1)??"Nothing",{str:`(${i})`}]}return t==="Matrix"&&(j(m(n,2))??"..")===".."?["Matrix",m(n,1)]:["Delimiter",n]}function Qa(e,n){if(Y(n))return["List"];let t=v(n);if(t==="Range"||t==="Linspace")return n;if(t==="Sequence"){let i=S(n),r=Ua(i,e);return r||["List",...i]}if(t==="Delimiter"){let i=j(m(n,2))??"...";if(i===";"||i===".;.")return["List",...(S(m(n,1))??[]).map(r=>Qa(e,r))];if(i===","||i===".,."){if(n=m(n,1),v(n)==="Sequence"){let r=S(n),s=Ua(r,e);return s||["List",...r]}return["List",n??"Nothing"]}}return["List",n]}function Ua(e,n){if(e.length<4)return null;let t=e[e.length-2];if(w(t)!=="ContinuationPlaceholder")return null;let i=e.slice(0,-2),r=e[e.length-1];if(i.length<2)return null;let s=i.map(F);if(s.some(l=>l===null))return null;let o=s,a=o[o.length-1]-o[o.length-2],u=n.options.tolerance;if(Math.abs(a)<u)return n.error("degenerate-range-step",n.index);for(let l=1;l<o.length;l++)if(Math.abs(o[l]-o[l-1]-a)>u)return n.error("inconsistent-range-samples",n.index);return["Range",o[0],r,a]}function Lf(e,n){return ne(n)>1&&S(n).every(t=>{let i=v(t);return vr(i)||xr(i)})?I(["\\begin{cases}",Qe("\\\\")(e,n),"\\end{cases}"]):I(["\\bigl\\lbrack",Qe(", ")(e,n),"\\bigr\\rbrack"])}function fi(e,n){if(n===null)return null;let t=e.parseExpression({minPrec:270});if(t===null)return null;if(v(t)==="Range"){let i=m(t,1),r=m(t,2);return i&&r?["Range",n,r,["Subtract",i,n]]:null}return["Range",n,t]}var mi={"(":"(",")":")","[":"\\lbrack","]":"\\rbrack","\u27E6":"\\llbrack","\u27E7":"\\rrbrack","{":"\\lbrace","}":"\\rbrace","<":"\\langle",">":"\\rangle","\u2016":"\\Vert","\\":"\\backslash","\u2308":"\\lceil","\u2309":"\\rceil","\u230A":"\\lfloor","\u230B":"\\rfloor","\u231C":"\\ulcorner","\u231D":"\\urcorner","\u231E":"\\llcorner","\u231F":"\\lrcorner","\u23B0":"\\lmoustache","\u23B1":"\\rmoustache"};function pi(e,n,t){let i=(t?.minPrec??0)>=19,r=w(n);if(r&&r.includes("_")){let a=r.indexOf("_"),u=r.substring(0,a),l=r.substring(a+1),c=parseInt(l,10),f=!isNaN(c)&&String(c)===l?c:l,p=f!==""&&(typeof f=="number"||typeof f=="string"&&f.length===1);(e.getSymbolType(u).matches("indexed_collection")||!i&&p)&&(n=["Subscript",u,f])}if(v(n)==="InvisibleOperator"&&ne(n)===2&&v(m(n,2))==="Delimiter"){let a=w(m(n,1));if(!a)return null;let u=e.parseExpression({...t??{},minPrec:20});if(u===null)return null;let l=m(m(n,2),1),c=[];return v(l)==="Sequence"?c=[...S(l)]:l&&(c=[l]),["Assign",a,["Function",u,...c??[]]]}if(v(n)==="Subscript"&&w(m(n,1))){let a=w(m(n,1));if(!e.getSymbolType(a).matches("indexed_collection")){let c=m(n,2),f=(c!==null&&typeof c=="string"?c:void 0)??(c!==null&&typeof c=="number"?String(c):void 0);if(f&&i){let p=e.parseExpression({...t??{},minPrec:20});return p===null?null:["Assign",a+"_"+f,p]}}let u=e.parseExpression({...t??{},minPrec:20});if(u===null)return null;let l=m(n,2);return j(l)!==null?["Assign",n,u]:w(l)?["Assign",n,u]:["Assign",n,u]}let s=v(n);if(s){let a=S(n),u=e.parseExpression({...t??{},minPrec:20});return u===null?null:["Assign",s,["Function",u,...a]]}if(!w(n))return null;let o=e.parseExpression({...t??{},minPrec:20});return o===null?null:["Assign",n,o]}function kr(e){let n=e.parseTabular();if(!n)return["List"];if(n.every(i=>{if(i.length!==1)return!1;let r=v(i[0]);return xr(r)||vr(r)}))return["List",...n.map(i=>i[0])];let t=[];for(let i of n)if(i.length===1)t.push("True"),t.push(i[0]);else if(i.length===2){let r=j(i[1]);t.push(r?"True":Nr(i[1])??"True"),t.push(i[0])}return["Which",...t]}function Te(e,n){let t=e.index;if(!e.match("<{>"))return e.index=t,!1;for(;e.match("<space>"););for(let i=0;i<n.length;i++)if(n[i]===" "){if(!e.match("<space>"))return e.index=t,!1;for(;e.match("<space>"););}else{if(e.peek!==n[i])return e.index=t,!1;e.nextToken()}for(;e.match("<space>"););return e.match("<}>")?!0:(e.index=t,!1)}function In(e,n){let t=e.index;if(e.skipVisualSpace(),e.match("\\text")){if(Te(e,n))return!0;e.index=t}let i=e.index,r=e.parseSymbol();return r!==null&&w(r)===n?!0:(e.index=i,!1)}function Sn(e,n){let t=e.index,i=In(e,n);return e.index=t,i}function Za(e,n){e.skipVisualSpace();let t=e.parseExpression({minPrec:0,condition:s=>Sn(s,"then")});if(t===null||!In(e,"then"))return null;e.skipVisualSpace();let i=e.parseExpression({minPrec:0,condition:s=>Sn(s,"else")});if(i===null||!In(e,"else"))return null;e.skipVisualSpace();let r=e.parseExpression(n)??"Nothing";return["If",t,i,r]}function Ya(e,n){let t=e.parseExpression({minPrec:0,condition:a=>Sn(a,"from")}),i=t?w(t):null;if(!i||!In(e,"from"))return null;let r=e.parseExpression({minPrec:0,condition:a=>Sn(a,"to")});if(r===null||!In(e,"to"))return null;let s=e.parseExpression({minPrec:0,condition:a=>Sn(a,"do")});return s===null||!In(e,"do")?null:["Loop",e.parseExpression(n)??"Nothing",["Element",i,["Range",r,s]]]}function Ka(e,n,t){let i={minPrec:21,condition:s=>{if(t?.condition?.(s))return!0;let o=s.index;s.skipVisualSpace();let a=s.peek===",";return s.index=o,!!(a||Sn(s,"where")||Sn(s,"with"))}},r=[];do{e.skipVisualSpace();let s=e.parseExpression(i);if(s===null)break;let o=v(s);if(o!=="Equal"&&o!=="Assign")return null;let a=m(s,1),u=m(s,2);if(!a||!u)return null;r.push(["Element",a,u]),e.skipVisualSpace()}while(e.match(","));return r.length===0?null:["Loop",n,...r]}function Wa(e,n,t){let i={minPrec:21,condition:a=>{if(t?.condition?.(a))return!0;let u=a.index;a.skipVisualSpace();let l=a.peek===",";return a.index=u,l}},r=[];do{e.skipVisualSpace();let a=e.parseExpression(i);if(!a)break;r.push(a),e.skipVisualSpace()}while(e.match(","));if(r.length===0)return null;let s=e.index;if(In(e,"for")){let a=Ka(e,n,t);if(a){let u=[];for(let l of r){let c=wr(l);v(c)==="Assign"&&u.push(["Declare",m(c,1)]),u.push(c)}return u.push(a),["Block",...u]}e.index=s}let o=[];for(let a of r){let u=wr(a);v(u)==="Assign"&&o.push(["Declare",m(u,1)]),o.push(u)}return o.push(n),["Block",...o]}function Bf(e){let n=[];for(let t of e){let i=wr(t);v(i)==="Assign"&&n.push(["Declare",m(i,1)]),n.push(i)}return["Block",...n]}function wr(e){if(v(e)!=="Assign")return e;let n=m(e,1);if(v(n)!=="Subscript")return e;let t=w(m(n,1));if(!t)return e;let i=m(n,2),r=(typeof i=="string"?i:void 0)??(typeof i=="number"?String(i):void 0);return r?["Assign",`${t}_${r}`,m(e,2)??"Nothing"]:e}function Mr(...e){return(n,t)=>{if(!w(t)&&v(t)!=="List")return null;let i=null;return e.length===0&&(i=n.parseGroup()),i??=n.parseExpression({minPrec:0}),i===null||e.length>0&&!n.matchAll(e)||e.length===0&&j(i)!==null?null:(v(i)==="Delimiter"&&(i=m(i,1)??"Nothing"),v(i)==="Sequence"?["At",t,...S(i)]:["At",t,i])}}var ht=[["alpha","\\alpha",945],["beta","\\beta",946],["gamma","\\gamma",947],["delta","\\delta",948],["epsilon","\\epsilon",949],["epsilonSymbol","\\varepsilon",1013],["zeta","\\zeta",950],["eta","\\eta",951],["theta","\\theta",952],["thetaSymbol","\\vartheta",977],["iota","\\iota",953],["kappa","\\kappa",954],["kappaSymbol","\\varkappa",1008],["lambda","\\lambda",955],["mu","\\mu",956],["nu","\\nu",957],["xi","\\xi",958],["omicron","\\omicron",959],["pi","\\pi",960],["piSymbol","\\varpi",982],["rho","\\rho",961],["rhoSymbol","\\varrho",1009],["sigma","\\sigma",963],["finalSigma","\\varsigma",962],["tau","\\tau",964],["phi","\\phi",981],["phiLetter","\\varphi",966],["upsilon","\\upsilon",965],["chi","\\chi",967],["psi","\\psi",968],["omega","\\omega",969],["Alpha","\\Alpha",913],["Beta","\\Beta",914],["Gamma","\\Gamma",915],["Delta","\\Delta",916],["Epsilon","\\Epsilon",917],["Zeta","\\Zeta",918],["Eta","\\Eta",919],["Theta","\\Theta",920],["Iota","\\Iota",921],["Kappa","\\Kappa",922],["Lambda","\\Lambda",923],["Mu","\\Mu",924],["Nu","\\Nu",925],["Xi","\\Xi",926],["Omicron","\\Omicron",927],["Rho","\\Rho",929],["Sigma","\\Sigma",931],["Tau","\\Tau",932],["Phi","\\Phi",934],["Upsilon","\\Upsilon",933],["Chi","\\Chi",935],["Psi","\\Psi",936],["Omega","\\Omega",937],["digamma","\\digamma",989],["aleph","\\aleph",8501],["bet","\\beth",8502],["gimel","\\gimel",8503],["dalet","\\daleth",8504],["ell","\\ell",8499],["turnedCapitalF","\\Finv",8498],["turnedCapitalG","\\Game",8513],["weierstrass","\\wp",8472],["eth","\\eth",240],["invertedOhm","\\mho",8487],["hBar","\\hbar",295],["hSlash","\\hslash",8463],["blackClubSuit","\\clubsuit",9827],["whiteHeartSuit","\\heartsuit",9825],["blackSpadeSuit","\\spadesuit",9824],["whiteDiamondSuit","\\diamondsuit",9826],["sharp","\\sharp",9839],["flat","\\flat",9837],["natural","\\natural",9838]],eu=[...ht.map(([e,n,t])=>({kind:"symbol",name:e,latexTrigger:[n],parse:e})),...ht.map(([e,n,t])=>({kind:"symbol",latexTrigger:[String.fromCodePoint(t)],parse:e}))];var nu=[{name:"To",latexTrigger:["\\to"],kind:"infix",precedence:270},{latexTrigger:["-",">"],kind:"infix",precedence:270,parse:(e,n,t)=>{if(e.options.strict!==!1)return null;let i=e.parseExpression({...t,minPrec:270});return i===null?null:["To",n,i]}}];function Le(e,n,t){if(Y(e))return null;let i,r=v(e);if(r==="Delimiter"){let l=j(m(e,2));if(l!==","&&l!=="(,)"&&l!=="[,]")return null;let c=m(e,1);v(c)==="Sequence"?i=[...S(c)]:i=c?[c]:[]}else if(r==="Sequence")i=[...S(e)];else return null;if(i.length!==2)return null;let[s,o]=i;return["Interval",n?["Open",s]:s,t?["Open",o]:o]}var tu=new Set(["Less","LessEqual","Greater","GreaterEqual","Equal","NotEqual","And","Or","Not"]),ru=[{name:"AlgebraicNumbers",latexTrigger:"\\overline\\Q"},{latexTrigger:"\\bar\\Q",parse:"AlgebraicNumbers"},{name:"ComplexNumbers",latexTrigger:["\\C"]},{latexTrigger:"\\mathbb{C}",parse:"ComplexNumbers"},{name:"UpperHalfPlane",latexTrigger:"\\mathbb{C}^+"},{latexTrigger:"\\mathbb{C}^{+}",parse:"UpperHalfPlane"},{latexTrigger:"\\C^+",parse:"UpperHalfPlane"},{latexTrigger:"\\C^{+}",parse:"UpperHalfPlane"},{name:"ImaginaryNumbers",latexTrigger:["\\imaginaryI","\\R"]},{name:"EmptySet",latexTrigger:["\\emptyset"]},{latexTrigger:["\\varnothing"],parse:"EmptySet"},{name:"Integers",latexTrigger:["\\Z"]},{latexTrigger:"\\mathbb{Z}",parse:"Integers"},{name:"RationalNumbers",latexTrigger:["\\Q"]},{latexTrigger:"\\mathbb{Q}",parse:"RationalNumbers"},{name:"RealNumbers",latexTrigger:["\\R"]},{latexTrigger:"\\mathbb{R}",parse:"RealNumbers"},{name:"TranscendentalNumbers",latexTrigger:"\\R-\\bar\\Q"},{latexTrigger:"\\R\\backslash\\bar\\Q",parse:"TranscendentalNumbers"},{name:"NegativeNumbers",latexTrigger:"\\R_{<0}"},{latexTrigger:"\\R^-",parse:"NegativeNumbers"},{latexTrigger:"\\R^{-}",parse:"NegativeNumbers"},{latexTrigger:"\\R^-",parse:"NegativeNumbers"},{latexTrigger:"\\R_-",parse:"NegativeNumbers"},{latexTrigger:"\\R_{-}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{\\lt}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{<}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{\\lt0}",parse:"NegativeNumbers"},{latexTrigger:"\\R^{<0}",parse:"NegativeNumbers"},{name:"NonPositiveNumbers",latexTrigger:"\\R_{\\le0}"},{latexTrigger:"\\R^{\\leq0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{-0}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{\\leq}",parse:"NonPositiveNumbers"},{latexTrigger:"\\R^{0-}",parse:"NonPositiveNumbers"},{name:"PositiveNumbers",latexTrigger:"\\R_{>0}"},{latexTrigger:"\\R^+",parse:"PositiveNumbers"},{latexTrigger:"\\R^{+}",parse:"PositiveNumbers"},{latexTrigger:"\\R_+",parse:"PositiveNumbers"},{latexTrigger:"\\R_{+}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{\\gt}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{\\gt 0}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{>}",parse:"PositiveNumbers"},{latexTrigger:"\\R^{>0}",parse:"PositiveNumbers"},{name:"NonNegativeNumbers",latexTrigger:"\\R_{\\geq0}"},{latexTrigger:"\\R^{0+}",parse:"NonNegativeNumbers"},{latexTrigger:"\\R^{\\geq}",parse:"NonNegativeNumbers"},{name:"ExtendedRealNumbers",latexTrigger:"\\overline\\R"},{latexTrigger:"\\bar\\R",parse:"ExtendedRealNumbers"},{name:"NegativeIntegers",latexTrigger:"\\Z_{<0}"},{latexTrigger:"\\Z_{\\lt0}",parse:"NegativeIntegers"},{latexTrigger:"\\Z^-",parse:"NegativeIntegers"},{latexTrigger:"\\Z^{-}",parse:"NegativeIntegers"},{latexTrigger:"\\Z_-",parse:"NegativeIntegers"},{latexTrigger:"\\Z_{-}",parse:"NegativeIntegers"},{latexTrigger:"\\Z^{\\lt}",parse:"NegativeIntegers"},{name:"NonPositiveIntegers",latexTrigger:"\\Z_{\\le0}"},{latexTrigger:"\\Z_{\\leq0}",parse:"NonPositiveIntegers"},{latexTrigger:"\\Z_{<0}",parse:"NonPositiveIntegers"},{name:"PositiveIntegers",latexTrigger:"\\N^*"},{latexTrigger:"\\Z_{>0}",parse:"PositiveIntegers"},{latexTrigger:"\\Z_{\\gt0}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{+}",parse:"PositiveIntegers"},{latexTrigger:"\\Z_+",parse:"PositiveIntegers"},{latexTrigger:"\\Z_{+}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{\\gt}",parse:"PositiveIntegers"},{latexTrigger:"\\Z^{\\gt0}",parse:"PositiveIntegers"},{latexTrigger:"\\N^+",parse:"PositiveIntegers"},{latexTrigger:"\\N^{+}",parse:"PositiveIntegers"},{latexTrigger:"\\N^*",parse:"PositiveIntegers"},{latexTrigger:"\\N^{*}",parse:"PositiveIntegers"},{latexTrigger:"\\N^\\star",parse:"PositiveIntegers"},{latexTrigger:"\\N^{\\star}",parse:"PositiveIntegers"},{latexTrigger:"\\N_1",parse:"PositiveIntegers"},{latexTrigger:"\\N_{1}",parse:"PositiveIntegers"},{name:"NonNegativeIntegers",latexTrigger:["\\N"]},{latexTrigger:"\\Z^{+0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{\\geq}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{\\geq0}",parse:"NonNegativeIntegers"},{latexTrigger:"\\Z^{0+}",parse:"NonNegativeIntegers"},{latexTrigger:"\\mathbb{N}",parse:"NonNegativeIntegers"},{latexTrigger:"\\N_0",parse:"NonNegativeIntegers"},{latexTrigger:"\\N_{0}",parse:"NonNegativeIntegers"},{name:"ExtendedIntegers",latexTrigger:"\\overline\\Z"},{latexTrigger:"\\bar\\Z",parse:"ExtendedIntegers"},{name:"ExtendedRationalNumbers",latexTrigger:"\\overline\\Q"},{latexTrigger:"\\bar\\Q",parse:"ExtendedRationalNumbers"},{name:"ExtendedComplexNumbers",latexTrigger:"\\overline\\C"},{latexTrigger:"\\bar\\C",parse:"ExtendedComplexNumbers"},{latexTrigger:["^","\\complement"],kind:"postfix",parse:(e,n)=>["Complement",n]},{name:"Complement",latexTrigger:["^","<{>","\\complement","<}>"],kind:"postfix",serialize:(e,n)=>I([e.serialize(m(n,1)),"^\\complement"])},{name:"Intersection",latexTrigger:["\\cap"],kind:"infix",precedence:350},{name:"Interval",serialize:iu},{kind:"matchfix",openTrigger:["["],closeTrigger:[")"],parse:(e,n)=>Le(n,!1,!0)},{kind:"matchfix",openTrigger:["\\lbrack"],closeTrigger:["\\rparen"],parse:(e,n)=>Le(n,!1,!0)},{kind:"matchfix",openTrigger:["\\lbrack"],closeTrigger:[")"],parse:(e,n)=>Le(n,!1,!0)},{kind:"matchfix",openTrigger:["["],closeTrigger:["\\rparen"],parse:(e,n)=>Le(n,!1,!0)},{kind:"matchfix",openTrigger:["("],closeTrigger:["]"],parse:(e,n)=>Le(n,!0,!1)},{kind:"matchfix",openTrigger:["\\lparen"],closeTrigger:["\\rbrack"],parse:(e,n)=>Le(n,!0,!1)},{kind:"matchfix",openTrigger:["\\lparen"],closeTrigger:["]"],parse:(e,n)=>Le(n,!0,!1)},{kind:"matchfix",openTrigger:["("],closeTrigger:["\\rbrack"],parse:(e,n)=>Le(n,!0,!1)},{kind:"matchfix",openTrigger:["]"],closeTrigger:["["],parse:(e,n)=>Le(n,!0,!0)},{kind:"matchfix",openTrigger:["\\rbrack"],closeTrigger:["\\lbrack"],parse:(e,n)=>Le(n,!0,!0)},{name:"Multiple",serialize:iu},{name:"Union",latexTrigger:["\\cup"],kind:"infix",precedence:350},{name:"Divides",latexTrigger:["\\mid"],kind:"infix",precedence:160},{name:"Set",kind:"matchfix",openTrigger:"{",closeTrigger:"}",parse:(e,n)=>{if(Y(n))return"EmptySet";v(n)=="Delimiter"&&j(m(n,2))===","&&(n=m(n,1));let t=v(n);if(t==="Divides"){let i=m(n,1),r=m(n,2);if(i!==null&&r!==null)return["Set",i,["Condition",r]]}if(t==="Colon"){let i=m(n,1),r=m(n,2);if(i!==null&&r!==null){let s=v(i);return s!==null&&tu.has(s)?["Which",i,r]:["Set",i,["Condition",r]]}}if(t==="Sequence"){let i=S(n),r=i.filter(o=>v(o)==="Colon");if(r.length>0&&r.every(o=>{let a=m(o,1),u=a!==null?v(a):null;return u!==null&&tu.has(u)})){let o=[];for(let a=0;a<i.length;a++){let u=i[a];if(v(u)==="Colon"){let l=m(u,1),c=m(u,2);if(l===null||c===null)return["Set",...i];o.push(l,c)}else{if(a!==i.length-1)return["Set",...i];o.push("True",u)}}return["Which",...o]}return["Set",...i]}return["Set",n]},serialize:(e,n)=>{if(ne(n)===2&&v(m(n,2))==="Condition"){let t=m(n,2);return I(["\\lbrace",e.serialize(m(n,1)),"\\mid",e.serialize(m(t,1)),"\\rbrace"])}return I(["\\lbrace",S(n).map(t=>e.serialize(t)).join(", "),"\\rbrace"])}},{name:"SetMinus",latexTrigger:["\\setminus"],kind:"infix",precedence:650},{name:"SymmetricDifference",latexTrigger:["\\triangle"],kind:"infix",precedence:B},{latexTrigger:["\\ni"],kind:"infix",associativity:"none",precedence:160,parse:(e,n,t)=>{let i=e.parseExpression(t);return i===null?null:["Element",i,n]}},{name:"Element",latexTrigger:["\\in"],kind:"infix",precedence:240},{name:"NotElement",latexTrigger:["\\notin"],kind:"infix",precedence:240},{name:"NotSubset",latexTrigger:["\\nsubset"],kind:"infix",associativity:"none",precedence:240},{name:"NotSuperset",latexTrigger:["\\nsupset"],kind:"infix",associativity:"none",precedence:240},{name:"NotSubsetNotEqual",latexTrigger:["\\nsubseteq"],kind:"infix",associativity:"none",precedence:240},{name:"NotSupersetNotEqual",latexTrigger:["\\nsupseteq"],kind:"infix",associativity:"none",precedence:240},{name:"SquareSubset",latexTrigger:["\\sqsubset"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSubsetEqual",latexTrigger:["\\sqsubseteq"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSuperset",latexTrigger:["\\sqsupset"],kind:"infix",associativity:"none",precedence:265},{name:"SquareSupersetEqual",latexTrigger:["\\sqsupseteq"],kind:"infix",associativity:"none",precedence:265},{name:"Subset",latexTrigger:["\\subset"],kind:"infix",associativity:"none",precedence:240},{latexTrigger:["\\subsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Subset"},{latexTrigger:["\\varsubsetneqq"],kind:"infix",associativity:"none",precedence:240,parse:"Subset"},{name:"SubsetEqual",latexTrigger:["\\subseteq"],kind:"infix",associativity:"none",precedence:240},{name:"Superset",latexTrigger:["\\supset"],kind:"infix",associativity:"none",precedence:240},{latexTrigger:["\\supsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Superset"},{latexTrigger:["\\varsupsetneq"],kind:"infix",associativity:"none",precedence:240,parse:"Superset"},{name:"SupersetEqual",latexTrigger:["\\supseteq"],kind:"infix",associativity:"none",precedence:240}];function iu(e,n){if(n===null)return"";let t=v(n);if(!t)return"";if(t==="Range")return I(["\\mathopen\\lbrack",e.serialize(m(n,1)),", ",e.serialize(m(n,2)),"\\mathclose\\rbrack"]);if(t==="Interval"){let r=m(n,1),s=m(n,2),o=!1,a=!1;return v(r)==="Open"&&(r=m(r,1),o=!0),v(s)==="Open"&&(s=m(s,1),a=!0),I([o?"\\lparen":"\\lbrack",e.serialize(r),", ",e.serialize(s),a?"\\rparen":"\\rbrack"])}let i=e.numericSetStyle(n,e.level);return""}function kn(e,n,t){e.indexOf("#1")<0&&e.indexOf("#2")<0&&(e=`#1 ${e} #2`);let i=e.split(/(#\d+)/).filter(r=>r.trim()!=="").map(r=>r.trim());return I(i.map(r=>{switch(r){case"#1":return n;case"#2":return t;default:return r}}))}function di(e,n){if(n==="none")return e;if(n==="0...360"){let t=e%360;return(t<0?t+360:t)||0}if(n==="-180...180"){let t=e%360;return t>180&&(t-=360),t<-180&&(t+=360),t||0}return e}function Vf(e){let n=e<0?-1:1,t=Math.abs(e),i=Math.floor(t),r=(t-i)*60,s=Math.floor(r),o=(r-s)*60,a=Math.round(o*1e3)/1e3,u=s,l=i;return a>=60&&(a=0,u++),u>=60&&(u=0,l++),{deg:n*l||0,min:n*u||0,sec:a===0?0:n*a}}function hi(e){let{deg:n,min:t,sec:i}=Vf(e),r=`${n}\xB0`;if(Math.abs(i)>.001){let s=i%1===0?i.toString():i.toFixed(2);r+=`${Math.abs(t)}'${Math.abs(Number(s))}"`}else Math.abs(t)>0?r+=`${Math.abs(t)}'`:r+=`0'0"`;return r}function qf(e){if(v(e)!=="Multiply")return[[],[]];let n=[],t=[];for(let i of S(e))if(v(i)==="Power"){let r=m(i,1),s=m(i,2);if(v(s)==="Negate"){let o=m(s,1);r&&o&&t.push(["Power",r,o])}else{let o=F(s)??NaN;o===-1?r&&t.push(r):o<0?r&&t.push(["Power",r,-o]):n.push(i)}}else if(v(i)==="Rational"&&ne(i)===2||v(i)==="Divide"){let r=m(i,1),s=m(i,2);F(r)!==1&&n.push(r),F(s)!==1&&t.push(s)}else{let r=Vn(i);r!==null?(r[0]!==1&&n.push(r[0]),t.push(r[1])):n.push(i)}return[n,t]}function Jf(e){let n=e.parseOptionalGroup(),t=e.parseGroup()??e.parseToken();if(Y(t)){let i=e.error("missing",e.index);return n!==null?["Root",i,Q(n)]:["Sqrt",i]}return n!==null?["Root",t,n]:["Sqrt",t]}function zf(e){if(typeof e=="number")return-e;if(typeof e=="string")return e.startsWith("-")?e.slice(1):e.startsWith("+")?"-"+e.slice(1):"-"+e;let n=e.num;return n.startsWith("-")?{num:n.slice(1)}:n.startsWith("+")?{num:"-"+n.slice(1)}:{num:"-"+n}}function bt(e,n,t,i){return t==null?"\\sqrt{}":(i=i??2,n==="solidus"?e.wrapShort(t)+"^{1/"+e.serialize(i)+"}":n==="quotient"?e.wrapShort(t)+"^{\\frac{1}{"+e.serialize(i)+"}}":F(i)===2?"\\sqrt{"+e.serialize(t)+"}":"\\sqrt["+e.serialize(i)+"]{"+e.serialize(t)+"}")}function Gf(e,n){e.level-=1;let t=v(n),i="",r=m(n,1);if(t==="Negate")i="-"+e.wrap(r,re+1);else if(t==="Subtract"){i=e.wrap(r,re);let s=m(n,2);if(s!==null){let o=e.wrap(s,re);o[0]==="-"?i+="+"+o.slice(1):o[0]==="+"?i+="-"+o.slice(1):i=i+"-"+o}}else if(t==="Add"){if(e.options.prettify&&ne(n)===2&&e.options.invisiblePlus!=="+"){let[a,u]=[m(n,1),m(n,2)],[l,c]=[a,u],f=F(l),p=Vn(c);if((f===null||p===null)&&([l,c]=[u,a],f=F(l),p=Vn(c)),f!==null&&p!==null&&isFinite(f)&&Number.isInteger(f)&&f>=0&&f<=1e3&&isFinite(p[0])&&isFinite(p[1])&&p[0]>0&&p[0]<=100&&p[1]<=100)return i=kn(e.options.invisiblePlus,e.serialize(l),e.serialize(c)),e.level+=1,i}if(e.options.prettify&&ne(n)===2){let[a,u]=yt(r),[l,c]=yt(m(n,2));if(u<0&&c>0)return i=e.wrap(l,re)+"-"+e.wrap(a,re),e.level+=1,i}i=e.serialize(r);let s=ne(n)+1,o=S(n);for(let a=2;a<s;a++)if(r=o[a-1],e.options.prettify){let[u,l]=yt(r),c=e.wrap(u,re);l>0?c.startsWith("+")||c.startsWith("-")?i+=c:i+="+"+c:c.startsWith("+")?i+="-"+c.slice(1):c.startsWith("-")?i+="+"+c.slice(1):i+="-"+c}else{let u=e.wrap(r,re);u[0]==="-"||u[0]==="+"?i+=u:i+="+"+u}}return e.level+=1,i}function fu(e,n){if(n===null)return"";e.level-=1;let t="";if(e.options.prettify===!0){let[u,l]=qf(n);l.length>0&&(l.length===1&&l[0]===1?u.length===0?t="1":u.length===1?t=e.serialize(u[0]):t=fu(e,["Multiply",...u]):t=e.serialize(["Divide",u.length===1?u[0]:["Multiply",...u],l.length===1?l[0]:["Multiply",...l]]))}if(t)return e.level+=1,t;let i=!1,r=null,s=ne(n)+1,o=S(n);e.options.prettify===!0&&o.length===2&&Tn(o[1])&&!Tn(o[0])&&(o=[o[1],o[0]]);let a=!1;for(let u=1;u<s;u++){if(r=o[u-1],r===null)continue;let l;if(Tn(r)){l=e.serialize(r),l==="-1"&&!t?(t="",i=!i):(l[0]==="-"&&(l=l.slice(1),i=!i),t?t=kn(e.options.multiply,t,l):t=l),a=!0;continue}if(v(r)==="Power"){let c=Vn(m(r,2));if(c!=null){let[f,p]=c;if(f===1&&p!==null){t+=bt(e,e.rootStyle(r,e.level),m(r,1),p),a=!1;continue}}}if(v(r)==="Power"&&!isNaN(F(m(r,1))??NaN)){l=e.serialize(r),t?t=kn(e.options.multiply,t,l):t=l,a=!0;continue}if(v(r)==="Negate"&&(r=m(r,1),i=!i),l=e.wrap(r,Ne),!t)t=l;else{let c=v(r);a&&(c==="Divide"||c==="Rational")?t=kn(e.options.multiply,t,l):/^\d/.test(l)?t=kn(e.options.multiply,t,l):e.options.invisibleMultiply?t=kn(e.options.invisibleMultiply,t,l):t=I([t,l])}a=!1}return e.level+=1,i?"-"+t:t}function gi(e){let n=e.parseGroup(),t=null;if(n===null?(n=e.parseToken(),t=e.parseToken(),n=Q(n),t=Q(t)):(n=Y(n)?e.error("missing",e.index):n,t=e.parseGroup(),t=Y(t)?e.error("missing",e.index):t),v(n)==="PartialDerivative"&&(v(t)==="PartialDerivative"||v(t)==="Multiply"&&v(m(t,1))==="PartialDerivative")){let s=m(n,3)??null,o=m(n,1);o==null&&(o=Q(e.parseExpression()));let a=[];if(v(t)==="Multiply"){for(let u of S(t))if(v(u)==="PartialDerivative"){let l=m(u,2);l&&a.push(l)}}else{let u=m(t,2);u&&a.push(u)}return a.length>1&&(a=["List",...a]),["PartialDerivative",o,...a,s===null?1:s]}let i=w(n);if(i==="d"||i==="d_upright"||i==="differentialD"){let s=[],o=a=>{if(!a)return;let u=w(a);if(u&&u!=="d"&&u!=="d_upright"&&u!=="differentialD"){s.push(a);return}let l=v(a);if(l==="Sequence"||l==="Multiply"||l==="InvisibleOperator")for(let c of S(a))o(c)};if(o(t),s.length===0){let a=w(t);a&&a.length>1&&a[0]==="d"&&s.push(a.slice(1))}if(s.length>0)return["D",Q(e.parseExpression()),...s]}return["Divide",n,t]}function su(e,n){if(n===null)return"";let t=Q(m(n,1)),i=Q(m(n,2)),r=e.options.prettify?e.fractionStyle(n,e.level):"quotient";if(r==="inline-solidus"||r==="nice-solidus"){let u=e.wrapShort(t),l=e.wrapShort(i);return r==="inline-solidus"?`${u}/${l}`:`{}^{${u}}\\!\\!/\\!{}_{${l}}`}else{if(r==="reciprocal")return F(t)===1?e.wrap(i)+"^{-1}":e.wrap(t)+e.wrap(i)+"^{-1}";if(r==="factor")return F(i)===1?e.wrap(t):"\\frac{1}{"+e.serialize(i)+"}"+e.wrapString(e.serialize(t),e.groupStyle(n,1))}let s="\\frac";r==="block-quotient"?s="\\dfrac":r==="inline-quotient"&&(s="\\tfrac");let o=e.serialize(t),a=e.serialize(i);return`${s}{${o}}{${a}}`}function Ar(e,n){if(!n)return"";let t=v(n),i=Q(m(n,1));if(t==="Sqrt")return bt(e,e.rootStyle(n,e.level-1),i,2);let r=Q(m(n,2));if(t==="Root")return bt(e,e.rootStyle(n,e.level-1),i,r);if(e.options.prettify){let o=F(r)??1;if(o===-1)return e.serialize(["Divide","1",i]);if(o<0)return e.serialize(["Divide","1",["Power",i,-o]]);if(v(r)==="Divide"||v(r)==="Rational"){let a=F(m(r,1)),u=F(m(r,2));if(a===1){let l=e.rootStyle(n,e.level);return bt(e,l,i,m(r,2))}if(a===-1)return u===2?e.serialize(["Divide","1",["Sqrt",i]]):e.serialize(["Divide","1",["Root",i,m(r,2)??oi]]);if(u===2)return`${e.serialize(["Sqrt",i])}^{${e.serialize(m(r,1))}}`}else if(v(r)==="Power"&&F(m(r,2))===-1){let a=e.rootStyle(n,e.level);return bt(e,a,i,m(r,1))}}return En("^",(o=>o.startsWith("-")?e.wrapString(o,"normal"):o)(e.wrapShort(i)),e.serialize(r))}function gt(e,n){e.skipSpace();let t=e.index,i=e.parseNumber(),r=null,s=null;if(i!==null&&(e.match("'")||e.match("\\prime"))){r=F(i),e.skipSpace();let u=e.index,l=e.parseNumber();l!==null&&(e.match('"')||e.match("\\doubleprime"))?s=F(l):e.index=u}else return e.index=t,["Degrees",n];let o=F(n);if(o!==null&&r!==null){let u=o+r/60;return s!==null&&(u+=s/3600),["Degrees",u]}let a=[["Quantity",n,"deg"]];return a.push(["Quantity",i,"arcmin"]),s!==null&&a.push(["Quantity",s,"arcsec"]),["Add",...a]}var pu=[{name:"CatalanConstant",symbolTrigger:"G"},{name:"GoldenRatio",latexTrigger:"\\varphi"},{name:"EulerGamma",latexTrigger:"\\gamma"},{name:"Degrees",latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(e,n)=>gt(e,n),serialize:(e,n)=>{let t=e.options,i=m(n,1);if(t.dmsFormat||t.angleNormalization&&t.angleNormalization!=="none"){let r=F(i);if(r!==null){let s=r;return t.angleNormalization&&t.angleNormalization!=="none"&&(s=di(s,t.angleNormalization)),t.dmsFormat?hi(s):`${s}\xB0`}}return I([e.serialize(i),"\\degree"])}},{latexTrigger:["\\degree"],kind:"postfix",precedence:880,parse:(e,n)=>gt(e,n)},{latexTrigger:["^","<{>","\\circ","<}>"],kind:"postfix",parse:(e,n)=>gt(e,n)},{latexTrigger:["^","\\circ"],kind:"postfix",parse:(e,n)=>gt(e,n)},{latexTrigger:["\xB0"],kind:"postfix",precedence:880,parse:(e,n)=>gt(e,n)},{latexTrigger:["\\ang"],parse:e=>{let n=e.parseGroup();return n===null?["Degrees"]:["Degrees",n]}},{name:"DMS",serialize:(e,n)=>{let t=F(m(n,1)),i=F(m(n,2)),r=F(m(n,3));if(t!==null){let o=i??0,a=r??0,u=`${t}\xB0`;return(o!==0||a!==0)&&(u+=`${o}'`),a!==0&&(u+=`${a}"`),u}let s=[];for(let o of[1,2,3]){let a=m(n,o);a!==null&&s.push(e.serialize(a))}return`\\operatorname{DMS}(${s.join(", ")})`}},{latexTrigger:["\\infty"],parse:"PositiveInfinity"},{latexTrigger:["\\infin"],parse:"PositiveInfinity"},{name:"PositiveInfinity",serialize:e=>e.options.positiveInfinity},{name:"NegativeInfinity",serialize:e=>e.options.negativeInfinity},{name:"ComplexInfinity",latexTrigger:["\\tilde","\\infty"],serialize:"\\tilde\\infty"},{latexTrigger:["\\tilde","<{>","\\infty","<}>"],parse:"ComplexInfinity"},{name:"Pi",kind:"symbol",latexTrigger:["\\pi"]},{latexTrigger:["\u03C0"],parse:"Pi"},{name:"ExponentialE",latexTrigger:["\\exponentialE"],parse:"ExponentialE",serialize:"\\exponentialE"},{latexTrigger:"\\operatorname{e}",parse:"ExponentialE"},{latexTrigger:"\\mathrm{e}",parse:"ExponentialE"},{kind:"function",symbolTrigger:"exp",parse:e=>{let n=e.parseArguments("implicit");return n===null?"Exp":["Exp",...n]}},{latexTrigger:"\\exp",parse:e=>{let n=e.parseArguments("implicit");return n===null?"Exp":["Exp",...n]}},{name:"ImaginaryUnit",latexTrigger:["\\imaginaryI"]},{latexTrigger:"\\operatorname{i}",parse:"ImaginaryUnit"},{latexTrigger:"\\mathrm{i}",parse:"ImaginaryUnit"},{name:"Abs",kind:"matchfix",openTrigger:"|",closeTrigger:"|",parse:(e,n)=>Y(n)?null:["Abs",n]},{kind:"matchfix",openTrigger:["\\vert"],closeTrigger:["\\vert"],parse:(e,n)=>Y(n)?null:["Abs",n]},{symbolTrigger:"abs",kind:"function",parse:"Abs"},{name:"Add",latexTrigger:["+"],kind:"infix",associativity:"any",precedence:re,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:re});if(i===null)return null;if(v(i)==="Negate"){let r=m(i,1);if(Tn(r))return qn("Add",n,zf(r))}return qn("Add",n,i)},serialize:Gf},{kind:"prefix",latexTrigger:["+"],precedence:re,parse:(e,n)=>e.parseExpression({...n,minPrec:400})},{name:"Ceil",kind:"matchfix",openTrigger:"\\lceil",closeTrigger:"\\rceil",parse:(e,n)=>Y(n)?null:["Ceil",n]},{kind:"matchfix",openTrigger:["\u2308"],closeTrigger:["\u2309"],parse:(e,n)=>Y(n)?null:["Ceil",n]},{symbolTrigger:"ceil",kind:"function",parse:"Ceil"},{name:"Chop",symbolTrigger:"chop",kind:"function",parse:"Chop"},{name:"Complex",precedence:re-1,serialize:(e,n)=>{let t=e.serialize(m(n,1)),i=F(m(n,2));if(i===0)return t;let r=i===1?"\\imaginaryI":i===-1?"-\\imaginaryI":I([e.serialize(m(n,2)),"\\imaginaryI"]);return F(m(n,1))===0?r:i!==null&&i<0?I([t,r]):I([t,"+",r])}},{name:"Divide",latexTrigger:"\\frac",precedence:Me,parse:gi,serialize:su},{latexTrigger:"\\dfrac",precedence:Me,parse:gi},{latexTrigger:"\\tfrac",precedence:Me,parse:gi},{latexTrigger:"\\cfrac",precedence:Me,parse:gi},{kind:"infix",latexTrigger:"\\over",associativity:"none",precedence:Me,parse:"Divide"},{latexTrigger:["\\/"],kind:"infix",associativity:"left",precedence:Me,parse:"Divide"},{latexTrigger:["/"],kind:"infix",associativity:"left",precedence:Me,parse:"Divide"},{latexTrigger:["\\div"],kind:"infix",associativity:"left",precedence:Me,parse:"Divide"},{name:"Exp",serialize:(e,n)=>{let t=m(n,1);return w(t)||F(t)!==null?I(["\\exponentialE^{",e.serialize(t),"}"]):I(["\\exp",e.wrap(Q(t))])}},{name:"Factorial",latexTrigger:["!"],kind:"postfix",precedence:br},{name:"Factorial2",latexTrigger:["!","!"],kind:"postfix",precedence:br},{name:"Floor",kind:"matchfix",openTrigger:"\\lfloor",closeTrigger:"\\rfloor",parse:(e,n)=>Y(n)?null:["Floor",n]},{kind:"matchfix",openTrigger:["\u230A"],closeTrigger:["\u230B"],parse:(e,n)=>Y(n)?null:["Floor",n]},{symbolTrigger:"floor",kind:"function",parse:"Floor"},{latexTrigger:["\\Gamma"],parse:"Gamma"},{latexTrigger:["\\zeta"],kind:"function",parse:"Zeta"},{latexTrigger:["\\Beta"],kind:"function",parse:"Beta"},{name:"LambertW",latexTrigger:["\\operatorname{W}"],kind:"function",serialize:(e,n)=>"\\operatorname{W}"+e.wrapArguments(n)},{name:"BesselJ",latexTrigger:["\\operatorname{J}"],kind:"function",serialize:(e,n)=>{let t=m(n,1),i=m(n,2);return t!==null&&i!==null?"\\operatorname{J}_{"+e.serialize(t)+"}"+e.wrapArguments(["BesselJ",i]):"\\operatorname{J}"+e.wrapArguments(n)}},{name:"BesselY",latexTrigger:["\\operatorname{Y}"],kind:"function",serialize:(e,n)=>{let t=m(n,1),i=m(n,2);return t!==null&&i!==null?"\\operatorname{Y}_{"+e.serialize(t)+"}"+e.wrapArguments(["BesselY",i]):"\\operatorname{Y}"+e.wrapArguments(n)}},{name:"BesselI",latexTrigger:["\\operatorname{I}"],kind:"function",serialize:(e,n)=>{let t=m(n,1),i=m(n,2);return t!==null&&i!==null?"\\operatorname{I}_{"+e.serialize(t)+"}"+e.wrapArguments(["BesselI",i]):"\\operatorname{I}"+e.wrapArguments(n)}},{name:"BesselK",latexTrigger:["\\operatorname{K}"],kind:"function",serialize:(e,n)=>{let t=m(n,1),i=m(n,2);return t!==null&&i!==null?"\\operatorname{K}_{"+e.serialize(t)+"}"+e.wrapArguments(["BesselK",i]):"\\operatorname{K}"+e.wrapArguments(n)}},{name:"AiryAi",latexTrigger:["\\operatorname{Ai}"],kind:"function",serialize:(e,n)=>"\\operatorname{Ai}"+e.wrapArguments(n)},{name:"AiryBi",latexTrigger:["\\operatorname{Bi}"],kind:"function",serialize:(e,n)=>"\\operatorname{Bi}"+e.wrapArguments(n)},{name:"GCD",latexTrigger:["\\gcd"],kind:"function"},{symbolTrigger:"gcd",kind:"function",parse:"GCD"},{symbolTrigger:"GCD",kind:"function",parse:"GCD"},{name:"Half",serialize:"\\frac12"},{name:"Lg",latexTrigger:["\\lg"],serialize:(e,n)=>"\\log_{10}"+e.wrapArguments(n),parse:e=>{let n=e.parseArguments("implicit");return n===null?"Lg":["Log",...n,10]}},{name:"Lb",latexTrigger:"\\lb",parse:e=>{let n=e.parseArguments("implicit");return n===null?"Log":["Log",n[0],2]}},{name:"Ln",latexTrigger:["\\ln"],parse:e=>cu("Ln",e),serialize:(e,n)=>"\\ln"+e.wrapArguments(n)},{name:"Log",latexTrigger:["\\log"],parse:e=>cu("Log",e),serialize:(e,n)=>{let[t,i]=S(n);return i?I(["\\log_{",e.serialize(i),"}",e.wrap(t)]):"\\log"+e.wrapArguments(n)}},{name:"LCM",latexTrigger:["\\lcm"],kind:"function"},{symbolTrigger:"lcm",kind:"function",parse:"LCM"},{symbolTrigger:"LCM",kind:"function",parse:"LCM"},{symbolTrigger:"max",kind:"function",parse:"Max",arguments:"implicit"},{symbolTrigger:"min",kind:"function",parse:"Min",arguments:"implicit"},{name:"Max",latexTrigger:"\\max",kind:"function",arguments:"implicit"},{name:"Min",latexTrigger:"\\min",kind:"function",arguments:"implicit"},{name:"Supremum",latexTrigger:"\\sup",kind:"function",arguments:"implicit"},{name:"Infimum",latexTrigger:"\\inf",kind:"function",arguments:"implicit"},{name:"Limit",latexTrigger:"\\lim",kind:"expression",parse:e=>{if(!e.match("_"))return null;let n=e.parseGroup();if(v(n)!=="To")return null;let t=e.parseExpression({minPrec:Ne});return t?["Limit",["Function",t,m(n,1)],m(n,2)]:null},serialize:(e,n)=>{let t=m(n,1),i=m(t,2),r=m(n,2);return I(["\\lim_{",e.serialize(i),"\\to",e.serialize(r),"}",e.serialize(m(t,1))])}},{name:"MinusPlus",latexTrigger:["\\mp"],kind:"infix",associativity:"any",precedence:We},{name:"Multiply",latexTrigger:["\\times"],kind:"infix",associativity:"any",precedence:Ne,serialize:fu},{latexTrigger:["\\cdot"],kind:"infix",associativity:"any",precedence:Ne,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:Ne+2});return i===null?null:qn("Multiply",n,i)}},{latexTrigger:["*"],kind:"infix",associativity:"any",precedence:Ne,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:Ne+2});return i===null?["Multiply",n,oi]:qn("Multiply",n,i)}},{name:"Mod",latexTrigger:"\\bmod",kind:"infix",precedence:Me,serialize:(e,n)=>{if(ne(n)!==2)return"";let t=e.serialize(m(n,1)),i=e.serialize(m(n,2));return I([t,"\\bmod",i])}},{latexTrigger:"\\mod",kind:"infix",precedence:Me,parse:"Mod"},{latexTrigger:"\\operatorname{mod}",parse:"Mod"},{latexTrigger:"\\pmod",kind:"prefix",precedence:B,parse:e=>{let n=e.parseGroup()??e.parseToken();return["Mod",Q(n)]}},{name:"Congruent",serialize:(e,n)=>{let t=e.serialize(m(n,1)),i=e.serialize(m(n,2));if(m(n,3)===null)return I([t,"\\equiv",i]);let r=e.serialize(m(n,3));return I([t,"\\equiv",i,"\\pmod{",r,"}"])}},{name:"Negate",latexTrigger:["-"],kind:"prefix",precedence:mt+1,parse:(e,n)=>{e.skipSpace();let t=e.parseExpression({...n,minPrec:mt+3});return t===null?null:["Negate",t]}},{kind:"matchfix",openTrigger:"||",closeTrigger:"||",parse:(e,n)=>Y(n)?null:["Norm",n]},{name:"Norm",kind:"matchfix",openTrigger:["\\left","\\Vert"],closeTrigger:["\\right","\\Vert"],parse:(e,n)=>Y(n)?null:["Norm",n],serialize:(e,n)=>{let t=m(n,1);if(v(t)==="Matrix"){let i=m(t,1),r=m(t,2),s=r?["Matrix",i,{str:"\u2016\u2016"},r]:["Matrix",i,{str:"\u2016\u2016"}];return e.serialize(s)}return`\\left\\Vert ${e.serialize(t)}\\right\\Vert`}},{name:"PlusMinus",latexTrigger:["\\pm"],kind:"infix",associativity:"any",precedence:We,serialize:(e,n)=>{let t=m(n,1);if(t===null)return"\\pm";if(ne(n)===1)return I(["\\pm",e.serialize(t)]);let i=m(n,2);return I([e.serialize(t),"\\pm",e.serialize(i)])}},{latexTrigger:["\\pm"],kind:"prefix",precedence:We,parse:(e,n)=>{let t=e.parseExpression({...n,minPrec:400});return["PlusMinus",0,Q(t)]}},{latexTrigger:["\\plusmn"],kind:"infix",associativity:"any",precedence:We,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:400});return["PlusMinus",n,Q(i)]}},{latexTrigger:["\\plusmn"],kind:"prefix",precedence:We,parse:(e,n)=>{let t=e.parseExpression({...n,minPrec:400});return["PlusMinus",Q(t)]}},{name:"Power",latexTrigger:["^"],kind:"infix",serialize:Ar},{latexTrigger:"\\prod",precedence:Ne,name:"Product",parse:au("Product","Multiply",Ne),serialize:lu("\\prod")},{latexTrigger:["*","*"],kind:"infix",associativity:"right",precedence:mt,parse:(e,n,t)=>{if(e.options.strict!==!1)return null;let i=e.parseExpression({...t,minPrec:mt});return i===null?null:["Power",n,i]}},{name:"Rational",precedence:Me,serialize:(e,n)=>n&&ne(n)===1?"\\operatorname{Rational}"+e.wrapArguments(n):su(e,n)},{name:"Reduce",serialize:(e,n)=>{let t=m(n,1);if(!t)return"";let i=m(n,2);return w(i)==="Add"?`\\sum ${e.serialize(t)}`:w(i)==="Multiply"?`\\prod ${e.serialize(t)}`:`\\operatorname{Reduce}\\left(${e.serialize(t)}, ${e.serialize(m(n,2))}\\right)`}},{name:"Root",serialize:Ar},{name:"Round",symbolTrigger:"round",kind:"function"},{name:"Square",precedence:720,serialize:(e,n)=>{let t=e.wrapShort(m(n,1));return(t.startsWith("-")?e.wrapString(t,"normal"):t)+"^2"}},{latexTrigger:["\\sum"],precedence:re,name:"Sum",parse:au("Sum","Add",Ne),serialize:lu("\\sum")},{name:"Heaviside",symbolTrigger:"Heaviside",kind:"function"},{name:"Sign",symbolTrigger:"sgn",kind:"function"},{name:"Sqrt",latexTrigger:["\\sqrt"],parse:Jf,serialize:Ar},{name:"Subtract",latexTrigger:["-"],kind:"infix",associativity:"left",precedence:re+2,parse:(e,n,t)=>{let i=e.parseExpression({...t,minPrec:re+3});return i===null?null:["Subtract",n,i]},serialize:(e,n)=>{let t=e.wrap(m(n,1),re+2),i=e.wrap(m(n,2),re+3);return I([t,"-",i])}},{name:"Distance",latexTrigger:["\\operatorname{distance}"],kind:"function",serialize:(e,n)=>"\\operatorname{distance}"+e.wrapArguments(n)}];function jf(e,n){if(e!==null){if(w(e))return{index:w(e)??"Nothing",upper:n};if(v(e)==="GreaterEqual"){let t=w(m(e,1))??"Nothing",i=m(e,2)??1;return{index:t,lower:i,upper:n}}if(v(e)==="Equal"){let t=w(m(e,1))??"Nothing",i=m(e,2);if(v(i)==="Range"){let s=m(i,1)??1,o=m(i,2)??void 0;return{index:t,lower:s,upper:o}}return{index:t,lower:i??1,upper:n}}if(v(e)==="Element")return{index:w(m(e,1))??"Nothing",element:e}}}function Hf(e){let n=v(e);return n?new Set(["Less","LessEqual","Greater","GreaterEqual","NotEqual","And","Or","Not"]).has(n):!1}function ou(e){if(e===null)return[];let n=_n(e);if(n)return[...n];if(v(e)==="Tuple"){let t=S(e);return t?[...t]:[e]}return[e]}function Uf(e,n){Y(e)&&(e=null),Y(n)&&(n=null);let t=ou(e),i=ou(n),r=[],s=0;for(;s<t.length;){let o=t[s],a=jf(o,i[s]);if(a){if(a.element&&s+1<t.length){let u=t[s+1];if(Hf(u)&&v(u)!=="Element"&&v(u)!=="Equal"){let l=a.element;if(Array.isArray(l)&&l.length>=3){let c=[l[0],...l.slice(1),u];a.element=c}s++}}r.push(a)}s++}return r}function au(e,n,t){return i=>{i.skipSpace(),i.pushSymbolTable();let r=null,s=null;for(;!(s&&r)&&(i.peek==="_"||i.peek==="^");)i.match("_")?s=i.parseGroup()??i.parseToken():i.match("^")&&(r=i.parseGroup()??i.parseToken()),i.skipSpace();if(!r&&!s){let l=i.parseExpression({minPrec:t});return i.popSymbolTable(),l?["Reduce",l,n]:null}let o=Uf(s,r),a=i.parseExpression({minPrec:t});if(i.popSymbolTable(),a===null)return[e];let u=[];for(let l of o){if(l.element){u.push(l.element);continue}let c=l.lower,f=l.upper,p=l.index??"Nothing";f!=null?u.push(["Tuple",p,c??1,f]):c!=null?u.push(["Tuple",p,c]):u.push(["Tuple",p])}return[e,a,...u]}}var Zf=new Set(["Tuple","Triple","Pair","Single","Limits","Element"]);function uu(e){return e==null||w(e)==="Nothing"?null:e}function Yf(e){let n=[],t=S(e);if(t.length<=1)return n;for(let i of t.slice(1)){let r=v(i);if(r&&Zf.has(r)){n.push(i);continue}break}return n}function Wf(e,n){if(v(n)==="Element"){let l=e.serialize(m(n,1)),c=e.serialize(m(n,2));return{sub:`${l}\\in ${c}`}}let t=m(n,1);t!==null&&v(t)==="Hold"&&(t=m(t,1));let i=uu(m(n,2)),r=uu(m(n,3)),s={},o=t?w(t):null,a=o!==null&&o!=="Nothing",u=a&&t?e.serialize(t):void 0;return a&&i!==null&&u?s.sub=`${u}=${e.serialize(i)}`:a&&u?s.sub=u:i!==null&&(s.sub=e.serialize(i)),r!==null&&(s.sup=e.serialize(r)),s}function lu(e){return(n,t)=>{let i=m(t,1);if(!i)return e;let r=Yf(t),s=e;if(r.length>0){let o=[],a=[];for(let u of r){let l=Wf(n,u);l.sub&&o.push(l.sub),l.sup&&a.push(l.sup)}o.length>0&&(s=En("_",s,o.join(", "))),a.length>0&&(s=En("^",s,a.join(", ")))}return I([s,n.serialize(i)])}}function cu(e,n){let t=null;n.match("_")&&(t=n.parseGroup()??n.parseToken());let i=n.parseArguments("implicit");return i===null&&t===null?[e]:i===null?[e,t]:t===null?[e,...i]:t===10?["Log",i[0]]:t===2?["Lb",...i]:["Log",i[0],t]}function yt(e){let n=1,t=e;do{e=t;let i=v(e);if(i==="Negate")n*=-1,t=m(e,1);else if(i==="Multiply"){let[r,s]=yt(m(e,1));s<0&&(n*=-1,r===1?t=["Multiply",...S(e).slice(1)]:t=["Multiply",r,...S(e).slice(1)])}else if(i==="Divide"||i==="Rational"){let[r,s]=yt(m(e,1));s<0&&(n*=-1,t=[i,r,m(e,2)])}else{let r=F(e);r!==null&&r<0&&(n*=-1,t=-r)}}while(t!==e);return[e,n]}var mu=[{name:"Real",kind:"function",latexTrigger:["\\Re"],arguments:"implicit"},{name:"Imaginary",kind:"function",latexTrigger:["\\Im"],arguments:"implicit"},{name:"Argument",kind:"function",latexTrigger:["\\arg"],arguments:"implicit"},{name:"Conjugate",latexTrigger:["^","\\star"],kind:"postfix"}];function C(e){return(n,t)=>{let i={"\\arcsin":"Arcsin","\\arccos":"Arccos","\\arctan":"Arctan","\\arctg":"Arctan","\\arcctg":"Arccot","\\arcsec":"Arcsec","\\arccsc":"Arccsc","\\arsinh":"Arsinh","\\arcsinh":"Arsinh","\\arcosh":"Arcosh","\\arccosh":"Arcosh","\\artanh":"Artanh","\\arctanh":"Artanh","\\arsech":"Arsech","\\arcsech":"Arsech","\\arcsch":"Arcsch","\\arccsch":"Arcsch","\\arcoth":"Arcoth","\\arccoth":"Arcoth","\\ch":"Cosh","\\cos":"Cos","\\cosh":"Cosh","\\cosec":"Csc","\\cot":"Cot","\\cotg":"Cot","\\ctg":"Cot","\\csc":"Csc","\\csch":"Csch","\\coth":"Coth","\\cth":"Coth","\\sec":"Sec","\\sech":"Sech","\\sin":"Sin","\\sinh":"Sinh","\\sh":"Sinh","\\tan":"Tan","\\tg":"Tan","\\tanh":"Tanh","\\th":"Tanh"},r=i[e??""]??e??"";if(n.atTerminator(t))return r;let s=r;do{let f=n.parsePostfixOperator(s,t);if(f===null)break;s=f}while(!0);n.skipSpace();let o=null;n.match("^")&&(o=n.parseGroup()??n.parseToken()),n.skipSpace();let a=n.parseArguments("implicit",{minPrec:Ne,condition:f=>i[f.peek]!==void 0||(t?.condition?.(f)??!1)}),l=a?.length===2&&(s==="Arctan"||Array.isArray(s)&&s[0]==="InverseFunction"&&s[1]==="Tan")?"Arctan2":s,c=a===null?s:typeof l=="string"?[l,...a]:["Apply",l,...a];return o===null?c:["Power",c,o]}}var du=[{name:"Arcsin",latexTrigger:["\\arcsin"],parse:C("Arcsin")},{name:"Arccos",latexTrigger:["\\arccos"],parse:C("Arccos")},{name:"Arctan",latexTrigger:["\\arctan"],parse:C("Arctan")},{latexTrigger:["\\arctg"],parse:C("Arctan")},{symbolTrigger:"arctg",parse:C("Arctan")},{name:"Arccot",symbolTrigger:"arcctg",parse:C("Arccot")},{latexTrigger:["\\arcctg"],parse:C("Arccot")},{name:"Arcoth",symbolTrigger:"arcoth",parse:C("Arcoth")},{symbolTrigger:"arccoth",parse:C("Arcoth")},{latexTrigger:["\\arcoth"],parse:C("Arcoth")},{latexTrigger:["\\arccoth"],parse:C("Arcoth")},{name:"Arcsec",symbolTrigger:"arcsec",parse:C("Arcsec")},{latexTrigger:["\\arcsec"],parse:C("Arcsec")},{name:"Arccsc",symbolTrigger:"arccsc",parse:C("Arccsc")},{latexTrigger:["\\arccsc"],parse:C("Arccsc")},{name:"Arsinh",symbolTrigger:"arsinh",parse:C("Arsinh")},{symbolTrigger:"arcsinh",parse:C("Arsinh")},{latexTrigger:["\\arsinh"],parse:C("Arsinh")},{latexTrigger:["\\arcsinh"],parse:C("Arsinh")},{name:"Arcosh",symbolTrigger:"arcosh",parse:C("Arcosh")},{symbolTrigger:"arccosh",parse:C("Arcosh")},{latexTrigger:"\\arcosh",parse:C("Arcosh")},{latexTrigger:"\\arccosh",parse:C("Arcosh")},{name:"Artanh",symbolTrigger:"artanh",parse:C("Artanh")},{symbolTrigger:"arctanh",parse:C("Artanh")},{latexTrigger:"\\artanh",parse:C("Artanh")},{latexTrigger:["\\arctanh"],parse:C("Artanh")},{name:"Arsech",symbolTrigger:"arsech",parse:C("Arsech")},{symbolTrigger:"arcsech",parse:C("Arsech")},{latexTrigger:["\\arsech"],parse:C("Arsech")},{latexTrigger:["\\arcsech"],parse:C("Arsech")},{name:"Arcsch",symbolTrigger:"arcsch",parse:C("Arcsch")},{symbolTrigger:"arccsch",parse:C("Arcsch")},{latexTrigger:["\\arcsch"],parse:C("Arcsch")},{latexTrigger:["\\arccsch"],parse:C("Arcsch")},{name:"Cosec",symbolTrigger:"cosec",parse:C("Cosec")},{latexTrigger:["\\cosec"],parse:C("Cosec")},{name:"Cosh",latexTrigger:["\\cosh"],parse:C("Cosh")},{latexTrigger:["\\ch"],parse:C("Cosh")},{name:"Cot",latexTrigger:["\\cot"],parse:C("Cot")},{latexTrigger:["\\cotg"],parse:C("Cot")},{latexTrigger:["\\ctg"],parse:C("Cot")},{name:"Csc",latexTrigger:["\\csc"],parse:C("Csc")},{name:"Csch",latexTrigger:["\\csch"],parse:C("Csch")},{name:"Coth",latexTrigger:["\\coth"],parse:C("Coth")},{latexTrigger:["\\cth"],parse:C("Coth")},{symbolTrigger:"cth",parse:C("Coth")},{latexTrigger:["\\coth"],parse:C("Coth")},{name:"Sec",latexTrigger:["\\sec"],parse:C("Sec")},{name:"Sech",symbolTrigger:"sech",parse:C("Sech")},{latexTrigger:["\\sech"],parse:C("Sech")},{name:"Sinh",latexTrigger:["\\sinh"],parse:C("Sinh")},{latexTrigger:["\\sh"],parse:C("Sinh")},{name:"Tan",latexTrigger:["\\tan"],parse:C("Tan")},{latexTrigger:["\\tg"],parse:C("Tan")},{name:"Tanh",latexTrigger:["\\tanh"],parse:C("Tanh")},{latexTrigger:["\\th"],parse:C("Tanh")},{name:"Cos",latexTrigger:["\\cos"],parse:C("Cos")},{name:"Sin",latexTrigger:["\\sin"],parse:C("Sin")},{name:"Sinc",symbolTrigger:"sinc",kind:"function"},{name:"FresnelS",symbolTrigger:"FresnelS",kind:"function"},{name:"FresnelC",symbolTrigger:"FresnelC",kind:"function"}];function Jn(e,n=1){return t=>{t.skipVisualSpace(),t.match("\\limits"),t.skipSpace();let i=null,r=null;for(;!(r!==null&&i!==null)&&(t.peek==="_"||t.peek==="^");)t.match("_")?r=t.parseGroup()??t.parseToken():t.match("^")&&(i=t.parseGroup()??t.parseToken()),t.skipSpace();Y(r)&&(r=null),Y(i)&&(i=null);let s=[r??"Nothing"],o=[i??"Nothing"];t.skipVisualSpace();let[a,u]=Xf(t,n);if(a&&u.length===0){if(v(a)==="Add"||v(a)==="Subtract"){let l=[],c=[];for(let f of S(a))if(u)c.push(f);else{let p;[p,u]=Ke(f),l.push(p??f)}if(u!==null&&c.length>0)return["Add",hu(e,["Add",...l],{indexes:u,subs:s,sups:o})??"Nothing",...c]}else if(v(a)==="Divide"){let l;[l,u]=Ke(m(a,1)),l!==null&&u!==null&&(a=["Divide",l,m(a,2)])}}return hu(e,a,{indexes:u,subs:s,sups:o})}}function hu(e,n,t){if(!n)return null;if(t.sups.length===0&&t.subs.length===0)return[e,n,...t.indexes];let i=t.indexes.length===0?v(n)==="Function"?S(n).slice(1):[]:t.indexes,r=Math.max(t.sups.length,t.subs.length,i.length);if(i.length===0)for(let o=0;o<r;o++)i.push("Nothing");else if(i.length!==r)for(let o=i.length;o<r;o++)i.push(["Error","'missing'"]);if(t.subs.length!==r)for(let o=t.subs.length;o<r;o++)t.subs.push("Nothing");if(t.sups.length!==r)for(let o=t.sups.length;o<r;o++)t.sups.push("Nothing");let s=i.map((o,a)=>{let u=t.sups[a],l=t.subs[a];return l==="Nothing"&&u==="Nothing"?o:["Tuple",o,l,u]});return[e,n,...s]}function Xf(e,n=1){let t=!1,i=e.parseExpression({minPrec:266,condition:()=>{let r=e.index;return t=yu(e),e.index=r,t}});return i!==null&&!t?Ke(i):[i,Qf(e,n)]}function Qf(e,n){let t=[];for(;t.length<n&&yu(e);){e.skipVisualSpace();let i=w(e.parseSymbol());if(i===null)return t;t.push(i)}return t}function Ke(e){let n=v(e),t=m(e,1);if(!t)return[e,[]];if(n==="Sequence"&&ne(e)===1)return Ke(t);if(n==="Multiply"||n==="InvisibleOperator"){let i=S(e);if(i){let[r,s]=ep(i);return r.length>0?[[n,...r],s]:[null,s]}}else if(n==="Delimiter"){let[i,r]=Ke(t);if(r)return i?[["Delimiter",["Sequence",i],...S(e).slice(1)],r]:[null,r]}else if(n==="Add"){let i=S(e);if(i.length>0){let[r,s]=Ke(i[i.length-1]);if(s.length>0){if(r)return[["Add",...i.slice(0,-1),r],s];if(i.length>2)return[["Add",...i.slice(0,-1)],s];if(i.length>2)return[i[0],s]}}}else if(n==="Negate"){let[i,r]=Ke(t);if(r.length>0)return[i?["Negate",i]:null,r]}else if(n==="Divide"){let[i,r]=Ke(t);if(r.length>0)return[["Divide",i??1,m(e,2)],r]}else{let i=S(e);if(i.length===1){let[r,s]=Ke(i[0]);if(s.length>0)return[[v(e),r],s]}}return[e,[]]}function gu(e){return(n,t)=>{if(!m(t,1))return e;let i=m(t,1),r=[];v(i)==="BuiltInFunction"?(r=["x"],i=[m(i,1),"x"]):v(i)==="Function"?(r=S(i).slice(1),i=m(i,1)):w(i)?r=[]:r=[];let s=S(t).slice(1),o=[],a=s.map((c,f)=>{if(w(c)==="Nothing")return o.push(w(r[f])??"Nothing"),"";if(w(c))return o.push(w(c)??"Nothing"),"";let p=v(c);if(p==="Tuple"||p==="Triple"||p==="Pair"||p==="Limits"||p==="Range"){if(ne(c)===3){let d=m(c,1);o.push(w(d)??"Nothing");let b=m(c,2),y=m(c,3);return w(b)==="Nothing"&&(b=null),w(y)==="Nothing"&&(y=null),b!==null&&y!==null?`_{${n.serialize(b)}}^{${n.serialize(y)}}`:b!==null?`_{${n.serialize(b)}}`:y!==null?`^{${n.serialize(y)}}`:""}return`_{${n.serialize(c)}}`}if(ne(c)===2){if(w(m(c,1))){o.push(w(m(c,1))??"Nothing");let y=m(c,2);return w(y)==="Nothing"?"":`_{${n.serialize(y)}}`}o.push(w(r[f])??"Nothing");let d=m(c,1),b=m(c,2);if(w(d)==="Nothing"&&(d=null),w(b)==="Nothing"&&(b=null),d!==null&&b!==null)return`_{${n.serialize(d)}}^{${n.serialize(b)}}`;if(d!==null)return`_{${n.serialize(d)}}`;if(b!==null)return`^{${n.serialize(b)}}`}else o.push(w(r[f])??"Nothing")}),u=o.filter(c=>w(c)!=="Nothing").map(c=>`\\mathrm{d}${n.serialize(w(c)??"x")}`);if(u.length>0&&(u=["\\,",...u]),a.length===0)return`${e}\\,${n.serialize(i)}\\!${u.join(" ")}`;let l=Kf(e,a);return l!==null?l+"\\!"+n.serialize(i)+u.join(" "):a.reverse().map(c=>`${e}${c}`).join("")+"\\!"+n.serialize(i)+u.join(" ")}}function Kf(e,n){let t=n.length;if(t!==2&&t!==3)return null;let r={"\\int":["\\iint","\\iiint"],"\\oint":["\\oiint","\\oiiint"]}[e];return!r||n.slice(1).some(s=>s)?null:r[t-2]+(n[0]??"")}var bu=[{kind:"expression",name:"Integrate",latexTrigger:["\\int"],parse:Jn("Integrate"),serialize:gu("\\int")},{kind:"expression",latexTrigger:["\\iint"],parse:Jn("Integrate",2)},{kind:"expression",latexTrigger:["\\iiint"],parse:Jn("Integrate",3)},{kind:"expression",name:"CircularIntegrate",latexTrigger:["\\oint"],parse:Jn("CircularIntegrate"),serialize:gu("\\oint")},{kind:"expression",latexTrigger:["\\oiint"],parse:Jn("CircularIntegrate",2)},{kind:"expression",latexTrigger:["\\oiiint"],parse:Jn("CircularIntegrate",3)}];function yu(e){let n=e.index;for(;e.match("\\cdot")||e.skipVisualSpace(););return e.matchAll(["\\mathrm","<{>","d","<}>"])||e.matchAll(["\\operatorname","<{>","d","<}>"])||e.match("d")||e.match("\\differentialD")?!0:(e.index=n,!1)}function ep(e){let n=[...e],t=[];for(;n.length>0;){let i;if([n,i]=np(n),!i)break;t.push(i)}return[n,t]}function np(e){if(e.length<2)return[e,""];let n=e[e.length-2];if(n==="d"||n==="d_upright"){let t=w(e[e.length-1]);if(t)return[e.slice(0,-2),t]}return[e,""]}var xu=[{name:"Matrix",serialize:(e,n)=>{let t=S(m(n,1));return Cr(e,t,j(m(n,2)),j(m(n,3)))}},{name:"Vector",serialize:(e,n)=>{let t=S(n);return Cr(e,t.map(i=>["List",i]),j(m(n,2)),j(m(n,3)))}},{kind:"environment",symbolTrigger:"pmatrix",parse:e=>{let n=nn(e),[t,i]=en(e);return n?[t,i,{str:"()"},{str:n}]:[t,i]}},{kind:"environment",symbolTrigger:"bmatrix",parse:e=>{let n=nn(e),[t,i]=en(e);return n?[t,i,{str:"[]"},{str:n}]:[t,i,{str:"[]"}]}},{kind:"environment",symbolTrigger:"Bmatrix",parse:e=>{let n=nn(e),[t,i]=en(e);return n?[t,i,{str:"{}"},{str:n}]:[t,i,{str:"{}"}]}},{kind:"environment",symbolTrigger:"vmatrix",parse:e=>{let n=nn(e),[t,i]=en(e);return n?["Determinant",[t,i,{str:n}]]:["Determinant",[t,i]]}},{kind:"environment",symbolTrigger:"Vmatrix",parse:e=>{let n=nn(e),[t,i]=en(e);return n?["Norm",[t,i,{str:n}]]:["Norm",[t,i]]}},{kind:"environment",symbolTrigger:"smallmatrix",parse:e=>{let n=nn(e),[t,i]=en(e);return n?[t,i,{str:"()"},{str:n}]:[t,i]}},{kind:"environment",symbolTrigger:"array",parse:e=>{let n=nn(e,!1),[t,i]=en(e);return n?[t,i,{str:".."},{str:n}]:[t,i,{str:".."}]}},{kind:"environment",symbolTrigger:"matrix",parse:e=>{let n=nn(e),[t,i]=en(e);return n?[t,i,{str:".."},{str:n}]:[t,i,{str:".."}]}},{kind:"environment",symbolTrigger:"matrix*",parse:e=>{let n=nn(e),[t,i]=en(e);return n?[t,i,{str:".."},{str:n}]:[t,i,{str:".."}]}},{name:"ConjugateTranspose",kind:"postfix",latexTrigger:["^","\\star"]},{kind:"postfix",latexTrigger:["^","\\H"],parse:"ConjugateTranspose"},{kind:"postfix",latexTrigger:["^","\\dagger"],parse:(e,n)=>["ConjugateTranspose",n]},{kind:"postfix",latexTrigger:["^","\\ast"],parse:(e,n)=>["ConjugateTranspose",n]},{kind:"postfix",latexTrigger:["^","\\top"],parse:(e,n)=>["Transpose",n]},{kind:"postfix",latexTrigger:["^","\\intercal"],parse:(e,n)=>["Transpose",n]},{name:"Transpose",kind:"postfix",latexTrigger:["^","T"]},{name:"PseudoInverse",kind:"postfix",latexTrigger:["^","+"]},{name:"Inverse",serialize:(e,n)=>e.serialize(m(n,1))+"^{-1}"},{name:"Trace",kind:"function",latexTrigger:"\\tr",arguments:"implicit",serialize:(e,n)=>zn(e,n,"\\tr")},{symbolTrigger:"tr",kind:"function",parse:"Trace",arguments:"implicit"},{name:"Kernel",kind:"function",latexTrigger:"\\ker",arguments:"implicit",serialize:(e,n)=>zn(e,n,"\\ker")},{symbolTrigger:"ker",kind:"function",parse:"Kernel",arguments:"implicit"},{name:"Dimension",kind:"function",latexTrigger:"\\dim",arguments:"implicit",serialize:(e,n)=>zn(e,n,"\\dim")},{symbolTrigger:"dim",kind:"function",parse:"Dimension",arguments:"implicit"},{name:"Degree",kind:"function",latexTrigger:"\\deg",arguments:"implicit",serialize:(e,n)=>zn(e,n,"\\deg")},{symbolTrigger:"deg",kind:"function",parse:"Degree",arguments:"implicit"},{name:"Hom",kind:"function",latexTrigger:"\\hom",arguments:"implicit",serialize:(e,n)=>zn(e,n,"\\hom")},{symbolTrigger:"hom",kind:"function",parse:"Hom",arguments:"implicit"},{name:"Determinant",kind:"function",latexTrigger:"\\det",arguments:"implicit",serialize:(e,n)=>{let t=m(n,1);if(v(t)==="Matrix"){let i=S(m(t,1));return Cr(e,i,"||",j(m(t,2)))}return zn(e,n,"\\det")}},{symbolTrigger:"det",kind:"function",parse:"Determinant",arguments:"implicit"},{name:"MatrixMultiply",serialize:(e,n)=>{let t=e.serialize(m(n,1)),i=e.serialize(m(n,2));return`${t} \\cdot ${i}`}}];function en(e){let n=e.parseTabular();return n?["Matrix",["List",...n.map(t=>["List",...t])]]:["",null]}function nn(e,n=!0){let t=e.parseStringGroup(n)?.trim();if(!t)return"";let i="";for(let r of t)r==="c"&&(i+="="),r==="l"&&(i+="<"),r==="r"&&(i+=">"),r==="|"&&(i+="|"),r===":"&&(i+=":");return i}function zn(e,n,t){if(S(n).length!==1)return`${t}${e.wrapArguments(n)}`;let r=m(n,1),s=e.serialize(r);return typeof r=="string"||typeof r=="number"?`${t} ${s}`:`${t}\\left(${s}\\right)`}function Cr(e,n,t,i){t??="()";let[r,s]=["",""];typeof t=="string"&&t.length===2&&([r,s]=t);let o="";if(i)for(let c of i)c==="<"?o+="l":c===">"?o+="r":c==="="?o+="c":c==="|"?o+="|":c===":"&&(o+=":");let a=[];for(let c of n??[]){let f=[];for(let p of S(c))f.push(e.serialize(p));a.push(f.join(" & "))}let u=a.join(`\\\\
|
|
6
|
+
`),l=o.length>0?`[${o}]`:"";return r==="("&&s===")"?I(["\\begin{pmatrix}",l,u,"\\end{pmatrix}"]):r==="["&&s==="]"?I(["\\begin{bmatrix}",l,u,"\\end{bmatrix}"]):r==="{"&&s==="}"?I(["\\begin{Bmatrix}",l,u,"\\end{Bmatrix}"]):r==="|"&&s==="|"?I(["\\begin{vmatrix}",l,u,"\\end{vmatrix}"]):r==="\u2016"&&s==="\u2016"?I(["\\begin{Vmatrix}",l,u,"\\end{Vmatrix}"]):r==="{"&&s==="."?I(["\\begin{dcases}",l,u,"\\end{dcases}"]):r==="."&&s==="}"?I(["\\begin{rcases}",l,u,"\\end{rcases}"]):o||r!=="."||s!=="."?I(["\\left",mi[r]??r,"\\begin{array}",`{${o}}`,u,"\\end{array}","\\right",mi[s]??s]):I(["\\begin{matrix}",u,"\\end{matrix}"])}var vu=[{name:"Mean",kind:"function",symbolTrigger:"mean"},{name:"Median",kind:"function",symbolTrigger:"median"},{name:"StandarDeviation",kind:"function",symbolTrigger:"stddev"},{latexTrigger:["\\bar"],kind:"expression",parse:(e,n)=>{let t=e.parseGroup()??e.parseToken();return!t||!w(t)?null:["Mean",t]}},{latexTrigger:"\\operatorname{var}",parse:"Variance"}];var bi={Q:1e30,R:1e27,Y:1e24,Z:1e21,E:1e18,P:1e15,T:1e12,G:1e9,M:1e6,k:1e3,h:100,da:10,d:.1,c:.01,m:.001,\u00B5:1e-6,\u03BC:1e-6,n:1e-9,p:1e-12,f:1e-15,a:1e-18,z:1e-21,y:1e-24,r:1e-27,q:1e-30},Eu=new Set(["m","g","s","A","K","mol","cd","Hz","N","Pa","J","W","C","V","F","ohm","S","Wb","T","H","lm","lx","Bq","Gy","Sv","kat","eV","L","bar"]),yi={m:{dimension:[1,0,0,0,0,0,0],scale:1},kg:{dimension:[0,1,0,0,0,0,0],scale:1},g:{dimension:[0,1,0,0,0,0,0],scale:.001},s:{dimension:[0,0,1,0,0,0,0],scale:1},A:{dimension:[0,0,0,1,0,0,0],scale:1},K:{dimension:[0,0,0,0,1,0,0],scale:1},mol:{dimension:[0,0,0,0,0,1,0],scale:1},cd:{dimension:[0,0,0,0,0,0,1],scale:1},Hz:{dimension:[0,0,-1,0,0,0,0],scale:1},N:{dimension:[1,1,-2,0,0,0,0],scale:1},Pa:{dimension:[-1,1,-2,0,0,0,0],scale:1},J:{dimension:[2,1,-2,0,0,0,0],scale:1},W:{dimension:[2,1,-3,0,0,0,0],scale:1},C:{dimension:[0,0,1,1,0,0,0],scale:1},V:{dimension:[2,1,-3,-1,0,0,0],scale:1},F:{dimension:[-2,-1,4,2,0,0,0],scale:1},ohm:{dimension:[2,1,-3,-2,0,0,0],scale:1},S:{dimension:[-2,-1,3,2,0,0,0],scale:1},Wb:{dimension:[2,1,-2,-1,0,0,0],scale:1},T:{dimension:[0,1,-2,-1,0,0,0],scale:1},H:{dimension:[2,1,-2,-2,0,0,0],scale:1},lm:{dimension:[0,0,0,0,0,0,1],scale:1},lx:{dimension:[-2,0,0,0,0,0,1],scale:1},Bq:{dimension:[0,0,-1,0,0,0,0],scale:1},Gy:{dimension:[2,0,-2,0,0,0,0],scale:1},Sv:{dimension:[2,0,-2,0,0,0,0],scale:1},kat:{dimension:[0,0,-1,0,0,1,0],scale:1},degC:{dimension:[0,0,0,0,1,0,0],scale:1,offset:273.15},degF:{dimension:[0,0,0,0,1,0,0],scale:5/9,offset:459.67},min:{dimension:[0,0,1,0,0,0,0],scale:60},h:{dimension:[0,0,1,0,0,0,0],scale:3600},d:{dimension:[0,0,1,0,0,0,0],scale:86400},ha:{dimension:[2,0,0,0,0,0,0],scale:1e4},L:{dimension:[3,0,0,0,0,0,0],scale:.001},t:{dimension:[0,1,0,0,0,0,0],scale:1e3},eV:{dimension:[2,1,-2,0,0,0,0],scale:1602176634e-28},Da:{dimension:[0,1,0,0,0,0,0],scale:16605390666e-37},au:{dimension:[1,0,0,0,0,0,0],scale:149597870700},deg:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/180},rad:{dimension:[0,0,0,0,0,0,0],scale:1},grad:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/200},turn:{dimension:[0,0,0,0,0,0,0],scale:2*Math.PI},arcmin:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/10800},arcsec:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/648e3},percent:{dimension:[0,0,0,0,0,0,0],scale:.01},ppm:{dimension:[0,0,0,0,0,0,0],scale:1e-6},dB:{dimension:[0,0,0,0,0,0,0],scale:1},Np:{dimension:[0,0,0,0,0,0,0],scale:1},in:{dimension:[1,0,0,0,0,0,0],scale:.0254},ft:{dimension:[1,0,0,0,0,0,0],scale:.3048},mi:{dimension:[1,0,0,0,0,0,0],scale:1609.344},lb:{dimension:[0,1,0,0,0,0,0],scale:.45359237},oz:{dimension:[0,1,0,0,0,0,0],scale:.028349523125},gal:{dimension:[3,0,0,0,0,0,0],scale:.003785411784},atm:{dimension:[-1,1,-2,0,0,0,0],scale:101325},bar:{dimension:[-1,1,-2,0,0,0,0],scale:1e5},cal:{dimension:[2,1,-2,0,0,0,0],scale:4.184},kWh:{dimension:[2,1,-2,0,0,0,0],scale:36e5},\u00C5:{dimension:[1,0,0,0,0,0,0],scale:1e-10}};function tp(e){if(e.length>2){let n=e.slice(0,2),t=e.slice(2);if(bi[n]!==void 0&&Eu.has(t)){let i=yi[t];if(i)return{prefixScale:bi[n],baseEntry:i}}}if(e.length>1){let n=e.slice(0,1),t=e.slice(1);if(bi[n]!==void 0&&Eu.has(t)){let i=yi[t];if(i)return{prefixScale:bi[n],baseEntry:i}}}return null}function ip(e){let n=yi[e];if(n)return n;let t=tp(e);return t?{dimension:t.baseEntry.dimension,scale:t.prefixScale*t.baseEntry.scale}:null}function $r(e){let n=ip(e);return n?n.dimension:null}var L1=new Map(["N","J","W","Pa","Hz","C","V","F","ohm","S","Wb","T","H","lm","lx","Gy","kat"].map(e=>[yi[e].dimension.join(","),e]));function rp(e){let n=e.indexOf("^");if(n===-1)return e;let t=e.slice(0,n),i=e.slice(n+1),r=parseInt(i,10);return isNaN(r)?e:["Power",t,r]}function xt(e){if(e=e.trim(),e.length===0)return null;if(e[0]==="("&&e[e.length-1]===")"){let r=0,s=!0;for(let o=0;o<e.length-1;o++)if(e[o]==="("?r++:e[o]===")"&&r--,r===0&&o<e.length-1){s=!1;break}if(s)return xt(e.slice(1,-1))}let n=-1,t=[],i=0;for(let r=0;r<e.length;r++)e[r]==="("?i++:e[r]===")"?i--:i===0&&(e[r]==="/"&&n===-1?n=r:e[r]==="*"&&t.push(r));if(n!==-1){let r=e.slice(0,n).trim(),s=e.slice(n+1).trim(),o=xt(r),a=xt(s);return!o||!a?null:["Divide",o,a]}if(t.length>0){let r=[],s=0;for(let a of t)r.push(e.slice(s,a).trim()),s=a+1;r.push(e.slice(s).trim());let o=r.filter(a=>a.length>0).map(a=>xt(a));return o.some(a=>a===null)?null:o.length===1?o[0]:["Multiply",...o]}return e[0]==="("?null:rp(e)}function Nu(e){return e=e.trim(),e.length===0?null:/[/*^()]/.test(e)?xt(e):e}function Su(e){if(!e.match("<{>"))return null;let n="",t=0;for(;!e.atEnd;){let i=e.peek;if(i==="<}>"&&t===0)return e.nextToken(),n;if(i==="<}>"){t--,e.nextToken();continue}if(i==="<{>"){t++,e.nextToken();continue}if(i==="<space>"){e.nextToken();continue}if(i==="\\cdot"){n+="*",e.nextToken();continue}if(i==="^"){n+="^",e.nextToken();continue}n+=i,e.nextToken()}return null}var sp=new Set(["d"]);function ku(e){if(!e||e.length===0||sp.has(e))return null;if($r(e)!==null)return e;if(/[/*^]/.test(e))try{let n=Nu(e);if(n!==null&&Rr(n))return n}catch{return null}return null}function Rr(e){if(typeof e=="string")return $r(e)!==null;if(!Array.isArray(e))return!1;let n=e[0];return n==="Multiply"||n==="Divide"?e.slice(1).every(t=>Rr(t)):n==="Power"?Rr(e[1]):!1}var Tu=e=>{let n=e.index,t=Su(e);if(t===null)return e.index=n,null;let i=ku(t);return i===null?(e.index=n,null):["__unit__",i]};function Mn(e){let n=w(e);if(n!==null)return n;if(typeof e=="number")return String(e);let t=v(e);if(!t)return"";if(t==="Divide"){let i=m(e,1),r=m(e,2);return`${Mn(i)}/${Mn(r)}`}if(t==="Multiply"){let i=[];if(Array.isArray(e))for(let r=1;r<e.length;r++)i.push(Mn(e[r]));return i.join("\\cdot ")}if(t==="Power"){let i=m(e,1),r=m(e,2),s=typeof r=="number"?String(r):w(r)??String(r);return`${Mn(i)}^{${s}}`}if(t==="Square"){let i=m(e,1);return`${Mn(i)}^{2}`}return""}function _u(e){let n=e.parseGroup();if(n===null)return null;let t=Mu(e);return t===null?null:["Quantity",n,t]}function Iu(e){return Mu(e)}function Mu(e){let n=e.index,t=Su(e);if(t===null)return e.index=n,null;let i=ku(t);return i===null?(e.index=n,null):i}var wu=[{latexTrigger:"\\mathrm",kind:"expression",parse:Tu},{latexTrigger:"\\text",kind:"expression",parse:Tu},{latexTrigger:"\\qty",parse:_u},{latexTrigger:"\\SI",parse:_u},{latexTrigger:"\\unit",parse:Iu},{latexTrigger:"\\si",parse:Iu},{name:"Quantity",serialize:(e,n)=>{let t=m(n,1),i=m(n,2);if(t===null||i===null)return"";let r=w(i),s=r==="deg"||r==="rad"||r==="arcmin"||r==="arcsec",o=e.options;if(s&&(o.dmsFormat||o.angleNormalization&&o.angleNormalization!=="none")){let l=F(t);if(l===null){let f=e.serialize(t),p=Mn(i);return I([f,"\\,",`\\mathrm{${p}}`])}let c=l;return r==="rad"?c=c*180/Math.PI:r==="arcmin"?c=c/60:r==="arcsec"&&(c=c/3600),o.angleNormalization&&o.angleNormalization!=="none"&&(c=di(c,o.angleNormalization)),o.dmsFormat?hi(c):`${c}\xB0`}let a=e.serialize(t),u=Mn(i);return I([a,"\\,",`\\mathrm{${u}}`])}}];var op=["pt","em","mu","ex","mm","cm","in","bp","sp","dd","cc","pc","nc","nd"];function Au(e){for(e.skipSpace(),(e.peek==="-"||e.peek==="+")&&e.nextToken();/^[\d.]$/.test(e.peek);)e.nextToken();for(let n of op)if(e.matchAll([...n]))return}function ap(e){return n=>{let t=n.parseGroup();return t===null?[e]:[e,t]}}function _e(e,n){return{name:e,latexTrigger:[n],parse:ap(e),serialize:(t,i)=>{let r=m(i,1);return r===null?n:`${n}{${t.serialize(r)}}`}}}function xi(e){return n=>{let t=n.parseExpression();return t!==null&&!Y(t)?["Annotated",t,{dict:{mathStyle:e}}]:"Nothing"}}function Be(e){return n=>{let t=n.parseExpression();return t!==null&&!Y(t)?["Annotated",t,{dict:{size:e}}]:"Nothing"}}var Cu=[{name:"Overscript",latexTrigger:["\\overset"],kind:"infix",precedence:700},{name:"Underscript",latexTrigger:["\\underset"],kind:"infix",precedence:700},{name:"Increment",latexTrigger:["+","+"],kind:"postfix",precedence:880,parse:(e,n)=>w(n)===null?null:["Increment",n]},{name:"Decrement",latexTrigger:["-","-"],kind:"postfix",precedence:880,parse:(e,n)=>w(n)===null?null:["Decrement",n]},{name:"PreIncrement",latexTrigger:["+","+"],kind:"prefix",precedence:880,parse:(e,n)=>{let t=e.parseExpression(n);return w(t)===null?null:["PreIncrement",t]}},{name:"PreDecrement",latexTrigger:["-","-"],kind:"prefix",precedence:880,parse:(e,n)=>{let t=e.parseExpression(n);return w(t)===null?null:["PreDecrement",t]}},{name:"Ring",latexTrigger:["\\circ"],kind:"infix",precedence:265},{name:"StringJoin",latexTrigger:["\\lt","\\gt"],kind:"infix",precedence:780},{name:"Starstar",latexTrigger:["\\star","\\star"],kind:"infix",precedence:780},{name:"PartialDerivative",latexTrigger:["\\partial"],kind:"prefix",parse:e=>{let n=!1,t="Nothing",i="Nothing";for(;!n;)e.skipSpace(),e.match("_")?i=e.parseGroup()??e.parseToken():e.match("^")?t=e.parseGroup()??e.parseToken():n=!0;let r=_n(i);if(r&&(i=["List",...r]),i===null||t===null)return null;let s=e.parseGroup()??"Nothing";if(!Y(s)){let o=e.parseArguments()??["Nothing"];s=[s,...o]}return["PartialDerivative",s,i,t]},serialize:(e,n)=>{let t="\\partial",i=m(n,1),r=m(n,2),s=m(n,3);return r!==null&&r!=="Nothing"&&(v(r)==="List"?t+="_{"+e.serialize(["Sequence",...S(r)])+"}":t+="_{"+e.serialize(r)+"}"),s!==null&&s!=="Nothing"&&(t+="^{"+e.serialize(s)+"}"),i!==null&&i!=="Nothing"&&(t+=e.serialize(i)),t},precedence:740},_e("OverBar","\\overline"),_e("UnderBar","\\underline"),_e("OverVector","\\vec"),_e("OverTilde","\\tilde"),_e("OverHat","\\hat"),_e("OverRightArrow","\\overrightarrow"),_e("OverLeftArrow","\\overleftarrow"),_e("OverRightDoubleArrow","\\Overrightarrow"),_e("OverLeftHarpoon","\\overleftharpoon"),_e("OverRightHarpoon","\\overrightharpoon"),_e("OverLeftRightArrow","\\overleftrightarrow"),_e("OverBrace","\\overbrace"),_e("OverLineSegment","\\overlinesegment"),_e("OverGroup","\\overgroup"),{latexTrigger:["\\textcolor"],parse:e=>{let n=e.index,t=e.parseStringGroup(),i=e.parseGroup();return t!==null?i!==null?["Annotated",i,{dict:{color:t}}]:"Nothing":(e.index=n,"Nothing")}},{latexTrigger:["\\colorbox"],parse:e=>{let n=e.index,t=e.parseStringGroup(),i=e.parseGroup();return t!==null?i!==null?["Annotated",i,{dict:{backgroundColor:t}}]:"Nothing":(e.index=n,"Nothing")}},{latexTrigger:["\\boxed"],parse:e=>{let n=e.parseGroup();return n!==null?["Annotated",n,{dict:{border:!0}}]:"Nothing"}},{latexTrigger:["\\displaystyle"],parse:xi("normal")},{latexTrigger:["\\textstyle"],parse:xi("compact")},{latexTrigger:["\\scriptstyle"],parse:xi("script")},{latexTrigger:["\\scriptscriptstyle"],parse:xi("scriptscript")},{latexTrigger:["\\color"],parse:e=>{let n=e.parseStringGroup();if(n!==null){let t=e.parseExpression();if(t!==null&&!Y(t))return["Annotated",t,{dict:{color:n}}]}return"Nothing"}},{latexTrigger:["\\tiny"],parse:Be(1)},{latexTrigger:["\\scriptsize"],parse:Be(2)},{latexTrigger:["\\footnotesize"],parse:Be(3)},{latexTrigger:["\\small"],parse:Be(4)},{latexTrigger:["\\normalsize"],parse:Be(5)},{latexTrigger:["\\large"],parse:Be(6)},{latexTrigger:["\\Large"],parse:Be(7)},{latexTrigger:["\\LARGE"],parse:Be(8)},{latexTrigger:["\\huge"],parse:Be(9)},{latexTrigger:["\\Huge"],parse:Be(10)},{name:"Annotated",serialize:(e,n)=>{let t=e.serialize(m(n,1)),i=Ja(m(n,2));if(i==null)return t;i.dict.mathStyle==="normal"?t=I(["{\\displaystyle",t,"}"]):i.dict.mathStyle==="compact"?t=I(["{\\textstyle",t,"}"]):i.dict.mathStyle==="script"?t=I(["{\\scriptstyle",t,"}"]):i.dict.mathStyle==="scriptscript"&&(t=I(["{\\scriptscriptstyle",t,"}"]));let r=i.dict.size;return r!==null&&r>=1&&r<=10&&(t=I(["{",{1:"\\tiny",2:"\\scriptsize",3:"\\footnotesize",4:"\\small",5:"\\normalsize",6:"\\large",7:"\\Large",8:"\\LARGE",9:"\\huge",10:"\\Huge"}[r],t,"}"])),i.dict.fontFamily==="monospace"?t=I(["\\texttt{",t,"}"]):i.dict.fontFamily==="sans-serif"&&(t=I(["\\textsf{",t,"}"])),i.dict.fontWeight==="bold"&&(t=I(["\\textbf{",t,"}"])),i.dict.fontStyle==="italic"?t=I(["\\textit{",t,"}"]):i.dict.fontStyle==="normal"&&(t=I(["\\textup{",t,"}"])),i.dict.color&&(t=I(["\\textcolor{",i.dict.color,"}{",t,"}"])),i.dict.backgroundColor&&(t=I(["\\colorbox{",i.dict.backgroundColor,"}{",t,"}"])),i.dict.border===!0&&(t=I(["\\boxed{",t,"}"])),t}},{latexTrigger:["\\!"],parse:()=>["HorizontalSpacing",-3]},{latexTrigger:["\\ "],parse:()=>["HorizontalSpacing",6]},{latexTrigger:["\\:"],parse:()=>["HorizontalSpacing",4]},{latexTrigger:["\\enskip"],parse:()=>["HorizontalSpacing",9]},{latexTrigger:["\\quad"],parse:()=>["HorizontalSpacing",18]},{latexTrigger:["\\qquad"],parse:()=>["HorizontalSpacing",36]},{latexTrigger:["\\,"],parse:()=>["HorizontalSpacing",3]},{latexTrigger:["\\;"],parse:()=>["HorizontalSpacing",5]},{latexTrigger:["\\enspace"],parse:()=>["HorizontalSpacing",9]},{latexTrigger:["\\hspace"],parse:e=>(e.peek==="*"&&e.nextToken(),e.parseStringGroup(),["HorizontalSpacing",0])},{latexTrigger:["\\hskip"],parse:e=>(Au(e),["HorizontalSpacing",0])},{latexTrigger:["\\kern"],parse:e=>(Au(e),["HorizontalSpacing",0])},{latexTrigger:["\\phantom"],parse:e=>(e.parseGroup(),"Nothing")},{latexTrigger:["\\vphantom"],parse:e=>(e.parseGroup(),"Nothing")},{latexTrigger:["\\hphantom"],parse:e=>(e.parseGroup(),"Nothing")},{latexTrigger:["\\placeholder"],parse:e=>(e.parseOptionalGroup(),e.parseGroup()??"Nothing")},{latexTrigger:["\\smash"],parse:e=>(e.parseGroup(),"Nothing")},{latexTrigger:["\\strut"],parse:e=>"Nothing"},{latexTrigger:["\\mathstrut"],parse:e=>"Nothing"},{name:"HorizontalSpacing",serialize:(e,n)=>{if(m(n,2)!==null){let i=j(m(n,2)),r=e.serialize(m(n,1));return i==="bin"?`\\mathbin{${r}}`:i==="op"?`\\mathop{${r}}`:i==="rel"?`\\mathrel{${r}}`:i==="ord"?`\\mathord{${r}}`:i==="open"?`\\mathopen{${r}}`:i==="close"?`\\mathclose{${r}}`:i==="punct"?`\\mathpunct{${r}}`:i==="inner"?`\\mathinner{${r}}`:r}let t=F(m(n,1));return t===null?"":{"-3":"\\!",6:"\\ ",3:"\\,",4:"\\:",5:"\\;",9:"\\enspace",18:"\\quad",36:"\\qquad"}[t]??""}},{latexTrigger:"\\operatorname{count}",parse:"Length"},{latexTrigger:"\\operatorname{random}",parse:"Random"},{latexTrigger:"\\operatorname{shuffle}",parse:"Shuffle"},{latexTrigger:"\\operatorname{repeat}",parse:"Repeat"},{latexTrigger:"\\operatorname{join}",parse:"Join"},{latexTrigger:"\\operatorname{range}",parse:"Range"},{name:"Triangle",latexTrigger:["\\operatorname{triangle}"],kind:"function",serialize:(e,n)=>"\\operatorname{triangle}"+e.wrapArguments(n)},{name:"GeometricVector",latexTrigger:["\\operatorname{vector}"],kind:"function",serialize:(e,n)=>"\\operatorname{vector}"+e.wrapArguments(n)},{name:"Sphere",latexTrigger:["\\operatorname{sphere}"],kind:"function",serialize:(e,n)=>"\\operatorname{sphere}"+e.wrapArguments(n)},{name:"Segment",latexTrigger:["\\operatorname{segment}"],kind:"function",serialize:(e,n)=>"\\operatorname{segment}"+e.wrapArguments(n)}];var $u=[{name:"Rgb",latexTrigger:["\\operatorname{rgb}"],kind:"function",serialize:(e,n)=>"\\operatorname{rgb}"+e.wrapArguments(n)},{name:"Hsv",latexTrigger:["\\operatorname{hsv}"],kind:"function",serialize:(e,n)=>"\\operatorname{hsv}"+e.wrapArguments(n)},{name:"Hsl",latexTrigger:["\\operatorname{hsl}"],kind:"function",serialize:(e,n)=>"\\operatorname{hsl}"+e.wrapArguments(n)},{name:"Oklab",latexTrigger:["\\operatorname{oklab}"],kind:"function",serialize:(e,n)=>"\\operatorname{oklab}"+e.wrapArguments(n)},{name:"Oklch",latexTrigger:["\\operatorname{oklch}"],kind:"function",serialize:(e,n)=>"\\operatorname{oklch}"+e.wrapArguments(n)},{name:"AsRgb",latexTrigger:["\\operatorname{asRgb}"],kind:"function",serialize:(e,n)=>"\\operatorname{asRgb}"+e.wrapArguments(n)},{name:"AsHsv",latexTrigger:["\\operatorname{asHsv}"],kind:"function",serialize:(e,n)=>"\\operatorname{asHsv}"+e.wrapArguments(n)},{name:"AsHsl",latexTrigger:["\\operatorname{asHsl}"],kind:"function",serialize:(e,n)=>"\\operatorname{asHsl}"+e.wrapArguments(n)},{name:"AsOklab",latexTrigger:["\\operatorname{asOklab}"],kind:"function",serialize:(e,n)=>"\\operatorname{asOklab}"+e.wrapArguments(n)},{name:"AsOklch",latexTrigger:["\\operatorname{asOklch}"],kind:"function",serialize:(e,n)=>"\\operatorname{asOklch}"+e.wrapArguments(n)},{name:"ColorDelta",latexTrigger:["\\operatorname{colorDelta}"],kind:"function",serialize:(e,n)=>"\\operatorname{colorDelta}"+e.wrapArguments(n)}];var up=[{name:"Mu0",kind:"symbol",latexTrigger:"\\mu_0"},{name:"VacuumPermittivity",kind:"symbol",latexTrigger:"\\varepsilon_0"}];var lp=[...Xa,...eu,...nu,...Ga,...ru,...Nn,...pu,...mu,...du,...bu,...xu,...vu,...wu,...Cu,...up,...$u];var cp="\\u{FE0F}",fp="\\u{20E3}",pp="\\u{200D}",mp="\\p{RI}\\p{RI}",dp="(?:[\\u{E0020}-\\u{E007E}]+\\u{E007F})",Ru=`(?:\\p{EMod}|${cp}${fp}?|${dp})`,hp="(?:(?=\\P{XIDC})(?=[^\\x23\\x2a\\x30-\\x39])\\p{Emoji})",Pu=`(?:${hp}${Ru}*|\\p{Emoji}${Ru}+|${mp})`,Du=`(?:${Pu})(${pp}${Pu})*`,fb=new RegExp(`(?:${Du})+`,"u"),Fu=new RegExp(`^(?:${Du})+$`,"u");var sy=new Set([...'!"#$%&(),/;:?@[]\\`|~'.split(""),"\\left","\\bigl","\\mleft"]);var oy=["pt","em","mu","ex","mm","cm","in","bp","sp","dd","cc","pc","nc","nd"].map(e=>[...e]);function Lu(e){return e!==void 0&&"value"in e}function vt(e){return e!==void 0&&"operator"in e}function wn(e,n,t=!0){let i=!t||e.every(s=>s.isCanonical)?e:e.map(s=>s.canonical);if(n){let s=a=>_(a,"Nothing")||a.operator===n||a.operator==="Sequence";if(i.every(a=>!s(a)))return i;let o=[];for(let a of i)_(a,"Nothing")||(g(a)&&(a.operator===n||a.operator==="Sequence")?o.push(...wn(a.ops,n,t)):o.push(a));return o}if(i.every(s=>!(_(s,"Nothing")||s.operator==="Sequence")))return i;let r=[];for(let s of i)_(s,"Nothing")||(g(s,"Sequence")?r.push(...wn(s.ops,n,t)):r.push(s));return r}function vp(e,n){if(e===n)return 0;if(e.length===0)return n.length;if(n.length===0)return e.length;let t=Array.from({length:e.length+1},(r,s)=>s),i=new Array(e.length+1);for(let r=1;r<=n.length;r++){i[0]=r;for(let s=1;s<=e.length;s++){let o=e[s-1]===n[r-1]?0:1;i[s]=Math.min(t[s]+1,i[s-1]+1,t[s-1]+o)}[t,i]=[i,t]}return t[e.length]}function Dr(e,n){let i=null,r=1/0,s=e.length;for(let o of n){if(Math.abs(s-o.length)>7)continue;let a=vp(e,o);if(a===0)return o;a<=7&&a<r&&(r=a,i=o)}return i}function vi(e,n,t){if(n=wn(n),!e.strict||n.length===t)return n;let i=[...n.slice(0,t)],r=Math.min(t,n.length);for(;r<t;)i.push(e.error("missing")),r+=1;for(;r<n.length;)i.push(e.error("unexpected-argument",n[r].toString())),r+=1;return i}function an(e,n,t){return n==null?e.error("missing"):t===void 0?e.error("unexpected-argument",n.toString()):(n=n.canonical,!n.isValid||n.type.matches(t)?n:e.typeError(t,n.type,n))}function Fr(e,n,t){if(n.length===t.length&&n.every((r,s)=>r.type.matches(t[s])))return n;let i=[];for(let r=0;r<=t.length-1;r++)i.push(an(e,n[r],t[r]));for(let r=t.length;r<=n.length-1;r++)i.push(e.error("unexpected-argument",n[r].toString()));return i}function Bu(e){let n={},t=Sp(e.engine),i=Ip(e.engine);if(_(e)&&!n[e.symbol]&&!e.symbol.startsWith("_")){if(!t.includes(e.symbol)){let r=Dr(e.symbol,t);r&&(n[e.symbol]=r)}}else if(g(e)&&!n[e.operator]&&!e.operator.startsWith("_")){let r=e.operator;if(!i.includes(r)){let s=Dr(r,i);s&&(n[r]=s)}for(let s of e.ops)n={...n,...Bu(s)}}return n}function Ip(e){let n=[],t=e.context.lexicalScope;for(;t;){for(let i of t.bindings.keys()){let r=t.bindings.get(i);vt(r)&&n.push(i)}t=t.parent}return n}function Sp(e){let n=[],t=e.context.lexicalScope;for(;t;){for(let i of t.bindings.keys()){let r=t.bindings.get(i);Lu(r)&&n.push(i)}t=t.parent}return n}function tn(e){let n=Bu(e);if(Object.keys(n).length===0)return"";if(Object.keys(n).length===1){let[i,r]=Object.entries(n)[0];return`Unknown symbol "${i}". Did you mean "${r}"?`}let t=[];for(let[i,r]of Object.entries(n))t.push(`- "${i}" -> "${r}"?`);return`Unknown symbols found:
|
|
7
7
|
${t.join(`
|
|
8
8
|
`)}`}var pe=Math.cosh||function(e){return Math.abs(e)<1e-9?1-e:(Math.exp(e)+Math.exp(-e))*.5},we=Math.sinh||function(e){return Math.abs(e)<1e-9?e:(Math.exp(e)-Math.exp(-e))*.5},kp=function(e){var n=Math.PI/4;if(-n>e||e>n)return Math.cos(e)-1;var t=e*e;return t*(t*(t*(t*(t*(t*(t*(t/20922789888e3-1/87178291200)+1/479001600)-1/3628800)+1/40320)-1/720)+1/24)-1/2)},Mp=function(e,n){var t=Math.abs(e),i=Math.abs(n);return t<3e3&&i<3e3?Math.sqrt(t*t+i*i):(t<i?(t=i,i=e/n):i=n/e,t*Math.sqrt(1+i*i))},Gn=function(){throw SyntaxError("Invalid Param")};function Or(e,n){var t=Math.abs(e),i=Math.abs(n);return e===0?Math.log(i):n===0?Math.log(t):t<3e3&&i<3e3?Math.log(e*e+n*n)*.5:(e=e/2,n=n/2,.5*Math.log(e*e+n*n)+Math.LN2)}var wp=function(e,n){var t={re:0,im:0};if(e==null)t.re=t.im=0;else if(n!==void 0)t.re=e,t.im=n;else switch(typeof e){case"object":if("im"in e&&"re"in e)t.re=e.re,t.im=e.im;else if("abs"in e&&"arg"in e){if(!Number.isFinite(e.abs)&&Number.isFinite(e.arg))return R.INFINITY;t.re=e.abs*Math.cos(e.arg),t.im=e.abs*Math.sin(e.arg)}else if("r"in e&&"phi"in e){if(!Number.isFinite(e.r)&&Number.isFinite(e.phi))return R.INFINITY;t.re=e.r*Math.cos(e.phi),t.im=e.r*Math.sin(e.phi)}else e.length===2?(t.re=e[0],t.im=e[1]):Gn();break;case"string":t.im=t.re=0;var i=e.match(/\d+\.?\d*e[+-]?\d+|\d+\.?\d*|\.\d+|./g),r=1,s=0;i===null&&Gn();for(var o=0;o<i.length;o++){var a=i[o];a===" "||a===" "||a===`
|
|
9
|
-
`||(a==="+"?r++:a==="-"?s++:a==="i"||a==="I"?(r+s===0&&Gn(),i[o+1]!==" "&&!isNaN(Number(i[o+1]))?(t.im+=parseFloat((s%2?"-":"")+i[o+1]),o++):t.im+=parseFloat((s%2?"-":"")+"1"),r=s=0):((r+s===0||isNaN(Number(a)))&&Gn(),i[o+1]==="i"||i[o+1]==="I"?(t.im+=parseFloat((s%2?"-":"")+a),o++):t.re+=parseFloat((s%2?"-":"")+a),r=s=0))}r+s>0&&Gn();break;case"number":t.im=0,t.re=e;break;default:Gn()}return isNaN(t.re)||isNaN(t.im),t},R=class e{constructor(n,t){this.re=0,this.im=0;var i=wp(n,t);this.re=i.re,this.im=i.im}sign(){var n=this.abs();return new e(this.re/n,this.im/n)}add(n,t){var i=new e(n,t);return this.isInfinite()&&i.isInfinite()?e.NAN:this.isInfinite()||i.isInfinite()?e.INFINITY:new e(this.re+i.re,this.im+i.im)}sub(n,t){var i=new e(n,t);return this.isInfinite()&&i.isInfinite()?e.NAN:this.isInfinite()||i.isInfinite()?e.INFINITY:new e(this.re-i.re,this.im-i.im)}mul(n,t){var i=new e(n,t);return this.isInfinite()&&i.isZero()||this.isZero()&&i.isInfinite()?e.NAN:this.isInfinite()||i.isInfinite()?e.INFINITY:i.im===0&&this.im===0?new e(this.re*i.re,0):new e(this.re*i.re-this.im*i.im,this.re*i.im+this.im*i.re)}div(n,t){var i=new e(n,t);if(this.isZero()&&i.isZero()||this.isInfinite()&&i.isInfinite())return e.NAN;if(this.isInfinite()||i.isZero())return e.INFINITY;if(this.isZero()||i.isInfinite())return e.ZERO;n=this.re,t=this.im;var r=i.re,s=i.im,o,a;return s===0?new e(n/r,t/r):Math.abs(r)<Math.abs(s)?(a=r/s,o=r*a+s,new e((n*a+t)/o,(t*a-n)/o)):(a=s/r,o=s*a+r,new e((n+t*a)/o,(t-n*a)/o))}pow(n,t){var i=new e(n,t);if(n=this.re,t=this.im,i.isZero())return e.ONE;if(i.im===0){if(t===0&&n>0)return new e(Math.pow(n,i.re),0);if(n===0)switch((i.re%4+4)%4){case 0:return new e(Math.pow(t,i.re),0);case 1:return new e(0,Math.pow(t,i.re));case 2:return new e(-Math.pow(t,i.re),0);case 3:return new e(0,-Math.pow(t,i.re))}}if(n===0&&t===0&&i.re>0&&i.im>=0)return e.ZERO;var r=Math.atan2(t,n),s=Or(n,t);return n=Math.exp(i.re*s-i.im*r),t=i.im*s+i.re*r,new e(n*Math.cos(t),n*Math.sin(t))}sqrt(){var n=this.re,t=this.im,i=this.abs(),r,s;if(n>=0){if(t===0)return new e(Math.sqrt(n),0);r=.5*Math.sqrt(2*(i+n))}else r=Math.abs(t)/Math.sqrt(2*(i-n));return n<=0?s=.5*Math.sqrt(2*(i-n)):s=Math.abs(t)/Math.sqrt(2*(i+n)),new e(r,t<0?-s:s)}exp(){var n=Math.exp(this.re);return this.im,new e(n*Math.cos(this.im),n*Math.sin(this.im))}expm1(){var n=this.re,t=this.im;return new e(Math.expm1(n)*Math.cos(t)+kp(t),Math.exp(n)*Math.sin(t))}log(){var n=this.re,t=this.im;return t===0&&n>0,new e(Or(n,t),Math.atan2(t,n))}abs(){return Mp(this.re,this.im)}arg(){return Math.atan2(this.im,this.re)}sin(){var n=this.re,t=this.im;return new e(Math.sin(n)*pe(t),Math.cos(n)*we(t))}cos(){var n=this.re,t=this.im;return new e(Math.cos(n)*pe(t),-Math.sin(n)*we(t))}tan(){var n=2*this.re,t=2*this.im,i=Math.cos(n)+pe(t);return new e(Math.sin(n)/i,we(t)/i)}cot(){var n=2*this.re,t=2*this.im,i=Math.cos(n)-pe(t);return new e(-Math.sin(n)/i,we(t)/i)}sec(){var n=this.re,t=this.im,i=.5*pe(2*t)+.5*Math.cos(2*n);return new e(Math.cos(n)*pe(t)/i,Math.sin(n)*we(t)/i)}csc(){var n=this.re,t=this.im,i=.5*pe(2*t)-.5*Math.cos(2*n);return new e(Math.sin(n)*pe(t)/i,-Math.cos(n)*we(t)/i)}asin(){var n=this.re,t=this.im,i=new e(t*t-n*n+1,-2*n*t).sqrt(),r=new e(i.re-t,i.im+n).log();return new e(r.im,-r.re)}acos(){var n=this.re,t=this.im,i=new e(t*t-n*n+1,-2*n*t).sqrt(),r=new e(i.re-t,i.im+n).log();return new e(Math.PI/2-r.im,r.re)}atan(){var n=this.re,t=this.im;if(n===0){if(t===1)return new e(0,1/0);if(t===-1)return new e(0,-1/0)}var i=n*n+(1-t)*(1-t),r=new e((1-t*t-n*n)/i,-2*n/i).log();return new e(-.5*r.im,.5*r.re)}acot(){var n=this.re,t=this.im;if(t===0)return new e(Math.atan2(1,n),0);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).atan():new e(n!==0?n/0:0,t!==0?-t/0:0).atan()}asec(){var n=this.re,t=this.im;if(n===0&&t===0)return new e(0,1/0);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).acos():new e(n!==0?n/0:0,t!==0?-t/0:0).acos()}acsc(){var n=this.re,t=this.im;if(n===0&&t===0)return new e(Math.PI/2,1/0);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).asin():new e(n!==0?n/0:0,t!==0?-t/0:0).asin()}sinh(){var n=this.re,t=this.im;return new e(we(n)*Math.cos(t),pe(n)*Math.sin(t))}cosh(){var n=this.re,t=this.im;return new e(pe(n)*Math.cos(t),we(n)*Math.sin(t))}tanh(){var n=2*this.re,t=2*this.im,i=pe(n)+Math.cos(t);return new e(we(n)/i,Math.sin(t)/i)}coth(){var n=2*this.re,t=2*this.im,i=pe(n)-Math.cos(t);return new e(we(n)/i,-Math.sin(t)/i)}csch(){var n=this.re,t=this.im,i=Math.cos(2*t)-pe(2*n);return new e(-2*we(n)*Math.cos(t)/i,2*pe(n)*Math.sin(t)/i)}sech(){var n=this.re,t=this.im,i=Math.cos(2*t)+pe(2*n);return new e(2*pe(n)*Math.cos(t)/i,-2*we(n)*Math.sin(t)/i)}asinh(){var n=this.im;this.im=-this.re,this.re=n;var t=this.asin();return this.re=-this.im,this.im=n,n=t.re,t.re=-t.im,t.im=n,t}acosh(){var n=this.acos();if(n.im<=0){var t=n.re;n.re=-n.im,n.im=t}else{var t=n.im;n.im=-n.re,n.re=t}return n}atanh(){var n=this.re,t=this.im,i=n>1&&t===0,r=1-n,s=1+n,o=r*r+t*t,a=o!==0?new e((s*r-t*t)/o,(t*r+s*t)/o):new e(n!==-1?n/0:0,t!==0?t/0:0),u=a.re;return a.re=Or(a.re,a.im)/2,a.im=Math.atan2(a.im,u)/2,i&&(a.im=-a.im),a}acoth(){var n=this.re,t=this.im;if(n===0&&t===0)return new e(0,Math.PI/2);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).atanh():new e(n!==0?n/0:0,t!==0?-t/0:0).atanh()}acsch(){var n=this.re,t=this.im;if(t===0)return new e(n!==0?Math.log(n+Math.sqrt(n*n+1)):1/0,0);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).asinh():new e(n!==0?n/0:0,t!==0?-t/0:0).asinh()}asech(){var n=this.re,t=this.im;if(this.isZero())return e.INFINITY;var i=n*n+t*t;return i!==0?new e(n/i,-t/i).acosh():new e(n!==0?n/0:0,t!==0?-t/0:0).acosh()}inverse(){if(this.isZero())return e.INFINITY;if(this.isInfinite())return e.ZERO;var n=this.re,t=this.im,i=n*n+t*t;return new e(n/i,-t/i)}conjugate(){return new e(this.re,-this.im)}neg(){return new e(-this.re,-this.im)}ceil(n){return n=Math.pow(10,n||0),new e(Math.ceil(this.re*n)/n,Math.ceil(this.im*n)/n)}floor(n){return n=Math.pow(10,n||0),new e(Math.floor(this.re*n)/n,Math.floor(this.im*n)/n)}round(n){return n=Math.pow(10,n||0),new e(Math.round(this.re*n)/n,Math.round(this.im*n)/n)}equals(n,t){var i=new e(n,t);return Math.abs(i.re-this.re)<=e.EPSILON&&Math.abs(i.im-this.im)<=e.EPSILON}clone(){return new e(this.re,this.im)}toString(){var n=this.re,t=this.im,i="";return this.isNaN()?"NaN":this.isInfinite()?"Infinity":(Math.abs(n)<e.EPSILON&&(n=0),Math.abs(t)<e.EPSILON&&(t=0),t===0?i+n:(n!==0?(i+=n,i+=" ",t<0?(t=-t,i+="-"):i+="+",i+=" "):t<0&&(t=-t,i+="-"),t!==1&&(i+=t),i+"i"))}toVector(){return[this.re,this.im]}valueOf(){return this.im===0?this.re:null}isNaN(){return isNaN(this.re)||isNaN(this.im)}isZero(){return this.im===0&&this.re===0}isFinite(){return isFinite(this.re)&&isFinite(this.im)}isInfinite(){return!(this.isNaN()||this.isFinite())}};R.ZERO=new R(0,0);R.ONE=new R(1,0);R.I=new R(0,1);R.PI=new R(Math.PI,0);R.E=new R(Math.E,0);R.INFINITY=new R(1/0,1/0);R.NAN=new R(NaN,NaN);R.EPSILON=1e-15;function Pe(e){if(e==null)return null;if(typeof e=="number")return Number.isInteger(e)&&e>=-Re&&e<=Re?e:null;if(!P(e))return null;let n=e.numericValue;if(typeof n=="number")return Number.isInteger(n)&&n>=-Re&&n<=Re?n:null;if(n.im!==0)return null;let t=n.re;return Number.isInteger(t)&&t>=-Re&&t<=Re?Number(t):null}function W(e){if(!P(e))return null;let n=e.numericValue;return Math.round(typeof n=="number"?n:n.re)}function Bp(e,n,t,i){return e.filter(r=>{let o=t.subs({[n]:r}).evaluate();return ie(o)==="True"})}function Br(e,n){if(e.operator!=="Element")return{status:"error",reason:"expected-element-expression"};if(!g(e))return{status:"error",reason:"expected-element-expression"};let t=_(e.op1)?e.op1.symbol:void 0;if(!t)return{status:"error",reason:"expected-index-variable"};let i=e.op2;if(!i)return{status:"error",reason:"expected-domain"};let r=e.op3,s=e.nops>=3&&r&&ie(r)!=="Nothing"?r:null,o=u=>{if(s){let l=Bp(u,t,s,n);return{status:"success",variable:t,values:l}}return{status:"success",variable:t,values:u}};if(i.operator==="Set"||i.operator==="List"){let u=g(i)?i.ops:void 0;if(u&&u.length<=1e3){if(i.operator==="List"&&u.length===2){let l=Pe(u[0]),c=Pe(u[1]);if(l!==null&&c!==null){let f=c-l+1;if(f>0&&f<=1e3){let p=[];for(let d=l;d<=c;d++)p.push(n.number(d));return o(p)}if(f>1e3)return{status:"non-enumerable",variable:t,domain:i,reason:"domain-too-large"}}}return o([...u])}return u&&u.length>1e3?{status:"non-enumerable",variable:t,domain:i,reason:"domain-too-large"}:{status:"error",reason:"empty-domain"}}if(g(i,"Range")){let u=Pe(i.op1),l=Pe(i.op2),c=i.ops.length>=3?Pe(i.op3):1;if(u!==null&&l!==null&&c!==null&&c!==0){let f=Math.floor((l-u)/c)+1;if(f>0&&f<=1e3){let p=[];for(let d=u;c>0?d<=l:d>=l;d+=c)p.push(n.number(d));return o(p)}if(f>1e3)return{status:"non-enumerable",variable:t,domain:i,reason:"domain-too-large"}}return{status:"non-enumerable",variable:t,domain:i,reason:"non-integer-bounds"}}if(g(i,"Interval")){let u=i.op1,l=i.op2,c=!1,f=!1;g(u,"Open")?(c=!0,u=u.op1):g(u,"Closed")&&(u=u.op1),g(l,"Open")?(f=!0,l=l.op1):g(l,"Closed")&&(l=l.op1);let p=Pe(u),d=Pe(l);if(p!==null&&d!==null){c&&(p+=1),f&&(d-=1);let b=d-p+1;if(b>0&&b<=1e3){let y=[];for(let E=p;E<=d;E++)y.push(n.number(E));return o(y)}if(b>1e3)return{status:"non-enumerable",variable:t,domain:i,reason:"domain-too-large"}}return{status:"non-enumerable",variable:t,domain:i,reason:"non-integer-bounds"}}let a=ie(i);if(a){if(["Integers","NonNegativeIntegers","PositiveIntegers","NegativeIntegers","Rationals","Reals","PositiveReals","NonNegativeReals","NegativeReals","NonPositiveReals","ExtendedReals","Complexes","ImaginaryNumbers","Numbers","ExtendedComplexes","AlgebraicNumbers","TranscendentalNumbers"].includes(a))return{status:"non-enumerable",variable:t,domain:i,reason:"infinite-domain"};let l=i.value;if(l&&l.operator==="Set"&&g(l)){let c=l.ops;if(c&&c.length<=1e3)return o([...c]);if(c&&c.length>1e3)return{status:"non-enumerable",variable:t,domain:i,reason:"domain-too-large"}}return{status:"non-enumerable",variable:t,domain:i,reason:"unknown-domain"}}return{status:"non-enumerable",variable:t,domain:i,reason:"unrecognized-domain-type"}}function qu(e){return e?._kind==="number"}function Vp(e){return e?._kind==="symbol"}function Et(e,n){return(e?._kind==="function"||e?._kind==="tensor")&&(n===void 0||e.operator===n)}function un(e){if(Et(e,"Interval")){let n=e.op1,t=e.op2,i=!1,r=!1;Et(n,"Open")?(i=!0,n=n.op1):Et(n,"Closed")&&(n=n.op1),Et(t,"Open")?(r=!0,t=t.op1):Et(t,"Closed")&&(t=t.op1);let s=n.N(),o=t.N();return!qu(s)||!qu(o)?void 0:{start:s.re,openStart:i,end:o.re,openEnd:r}}if(Vp(e)){if(e.symbol==="EmptySet")return{start:0,openStart:!0,end:0,openEnd:!0};if(e.symbol==="RealNumbers")return{start:-1/0,openStart:!1,end:1/0,openEnd:!1};if(e.symbol==="NegativeNumbers")return{start:-1/0,openStart:!1,end:0,openEnd:!0};if(e.symbol==="NonPositiveNumbers")return{start:-1/0,openStart:!1,end:0,openEnd:!1};if(e.symbol==="PositiveNumbers")return{start:0,openStart:!0,end:1/0,openEnd:!1};if(e.symbol==="NonNegativeNumbers")return{start:0,openStart:!1,end:1/0,openEnd:!1}}}function Ju(e,n){return!((e.openStart?n<=e.start:n<e.start)||(e.openEnd?n>=e.end:n>e.end))}function zu(e){let n=Math.sin(e*12.9898)*43758.5453;return n-Math.floor(n)}function Gu(e){return e+.6180339887498949}function ju(e,n,t){return n.every(i=>i.isCanonical)?n:n.map(i=>e.expr(i,{scope:t}))}function Ie(e){if(typeof e=="string")return pa(e)?e:"error";switch(e.kind){case"union":return Zu(e);case"intersection":return Jp(e);case"negation":return qp(e);case"collection":case"indexed_collection":return zp(e.kind,e);case"list":return Gp(e);case"set":return jp(e);case"tuple":return Hp(e);case"record":return Up(e);case"dictionary":return Zp(e);case"signature":return Yp(e);case"value":return e;case"reference":return e;default:throw new Error(`Unknown type kind: ${e}`)}}function he(e){return typeof e!="object"||Object.isFrozen(e)||Object.prototype.hasOwnProperty.call(e,"toString")||Object.defineProperty(e,"toString",{value:()=>G(e)}),e}function Uu(e){let n=[],t=new Set;for(let i of e){let r=Ie(i),s=typeof r=="string"?r:G(r);t.has(s)||(t.add(s),n.push(r))}return n}function qp(e){let n=Ie(e.type);return n==="nothing"?"any":n==="any"?"nothing":he({kind:"negation",type:n})}function Zu(e){let n=Uu(e.types);if(n.length===0)return"never";if(n.some(i=>i==="error"))return"error";if(n.length===1)return he(n[0]);let t=[];for(let i of n)if(!t.some(r=>A(i,r))){for(let r=t.length-1;r>=0;r--)A(t[r],i)&&t.splice(r,1);t.push(i)}return t.length===1?he(t[0]):he({kind:"union",types:t})}function Yu(e,n){if(A(e,n))return e;if(A(n,e))return n;if(typeof e=="object"&&e.kind==="union")return Hu(e.types,n);if(typeof n=="object"&&n.kind==="union")return Hu(n.types,e);if(typeof e=="string"&&typeof n=="string"){let t=va(e,n);return t.length===0?"nothing":t.length===1?t[0]:{kind:"union",types:t}}return"nothing"}function Hu(e,n){let t=e.map(i=>Yu(i,n)).filter(i=>i!=="nothing");return t.length===0?"nothing":t.length===1?t[0]:Zu({kind:"union",types:t})}function Jp(e){let n=Uu(e.types);if(n.length===0)return"nothing";if(n.some(i=>i==="error"))return"error";let t=n[0];for(let i=1;i<n.length;i++)if(t=Yu(t,n[i]),t==="nothing")return"nothing";return he(t)}function zp(e,n){let t=Ie(n.elements);return t==="error"?"error":t==="nothing"?he({kind:e,elements:"nothing"}):t==="any"?e:he({...n,elements:t})}function Gp(e){let n=Ie(e.elements);if(n==="error")return"error";if(n==="nothing")return he({kind:"list",elements:"nothing"});if(n==="any")return"list";let t=e.dimensions;return t&&(t=t.filter(i=>i>=1||i===-1),t.length===0)?"nothing":he({...e,dimensions:t,elements:n})}function jp(e){let n=Ie(e.elements);return n==="error"?"error":n==="nothing"?he({kind:"set",elements:"nothing"}):n==="any"?"set":he({...e,elements:n})}function Hp(e){let n=e.elements.map(t=>({...t,type:Ie(t.type)}));return n.length===0?"nothing":n.some(t=>t.type==="error")?"error":(n=n.filter(t=>t.type!=="nothing"),he({...e,elements:n}))}function Up(e){let n={};for(let[t,i]of Object.entries(e.elements))n[t]=Ie(i);return Object.values(n).some(t=>t==="error")?"error":(n=Object.fromEntries(Object.entries(n).filter(([t,i])=>i!=="nothing")),Object.keys(n).length===0?"record":he({...e,elements:n}))}function Zp(e){let n=Ie(e.values);return n==="error"||n==="nothing"?"error":n==="any"||n==="unknown"?"any":he({kind:"dictionary",values:n})}function Yp(e){let n=e.args?.map(s=>({...s,type:Ie(s.type)})),t=e.optArgs?.map(s=>({...s,type:Ie(s.type)})),i=e.variadicArg?{...e.variadicArg,type:Ie(e.variadicArg.type)}:void 0,r=Ie(e.result);return n?.some(s=>s.type==="error")||t?.some(s=>s.type==="error")||i?.type==="error"||r==="error"?"error":(t=t?.filter(s=>s.type!=="nothing"),n?.length===0&&(t=void 0),t?.length===0&&(t=void 0),i?.type==="nothing"&&(i=void 0),he({...e,args:n,optArgs:t,variadicArg:i,variadicMin:i?e.variadicMin:void 0,result:r}))}function Wp(e,n){return Ie({kind:"intersection",types:[e,n]})}function Ti(e,n){let t=e.type;if(t.matches(n))return!0;if(Wp(t.type,n)==="nothing"||P(e))return!1}var Nt=50,Tt=si(),hv={List:{complexity:8200,signature:"(any*) -> list",type:(e,{engine:n})=>K(`list<${de.widen(...e.map(t=>t.type))}>`),canonical:Xp,lazy:!0,evaluate:(e,{engine:n,materialization:t})=>{if(t)return n._fn("List",qr(e).map(i=>i.evaluate({materialization:t})))},eq:Xu,collection:si()},Set:{complexity:8200,signature:"(any*) -> set",type:(e,{engine:n})=>Ve(e)!==null?K("set"):K(`set<${de.widen(...e.map(t=>t.type))}>`),canonical:Qp,lazy:!0,evaluate:(e,{engine:n,numericApproximation:t,materialization:i})=>{let r=Ve(e);if(r!==null){let s=An(r);return s===void 0||s.length>gr?void 0:n.function("Set",s)}return n.function("Set",e.map(s=>s.evaluate({numericApproximation:t,materialization:i})))},eq:(e,n)=>{if(e.operator!==n.operator||!g(e)||!g(n)||e.nops!==n.nops)return!1;let t=i=>n.ops.some(r=>i.isSame(r));return e.ops.every(t)},collection:{...Tt,at:void 0,indexWhere:void 0,isLazy:e=>g(e)&&Ve(e.ops)!==null,count:e=>{if(!g(e))return 0;let n=Ve(e.ops);return n===null?e.nops:An(n)?.length},isEmpty:e=>{if(!g(e))return!0;let n=Ve(e.ops);if(n===null)return e.nops===0;let t=An(n);return t===void 0?void 0:t.length===0},isFinite:e=>{if(!g(e))return!0;let n=Ve(e.ops);if(n===null||An(n)!==void 0||n.domain?.isFiniteCollection===!0)return!0},iterator:e=>{if(!g(e))return Tt.iterator(e);let n=Ve(e.ops);if(n===null)return Tt.iterator(e);let t=An(n);if(t===void 0)return;let i=0;return{next:()=>i>=t.length?{value:void 0,done:!0}:{value:t[i++],done:!1}}},contains:(e,n)=>{if(!g(e))return;let t=Ve(e.ops);return t!==null?Kp(t,n):el(e.ops,n)},elttype:e=>{if(!g(e))return Tt.elttype(e);let n=Ve(e.ops);if(n===null)return Tt.elttype(e);let t=An(n);return t===void 0||t.length===0?"unknown":Ee(...t.map(i=>i.type.type))}}},Length:{description:"Number of elements in a collection. Returns undefined for non-collections and for infinite collections.",complexity:4e3,signature:"(any) -> integer",type:()=>"integer",evaluate:([e],{engine:n})=>{if(!e.isCollection)return;if(e.isEmptyCollection)return n.Zero;let t=e.count;if(!(t===void 0||!isFinite(t)))return n.number(t)}},Tuple:{description:"A fixed number of heterogeneous elements",complexity:8200,signature:"(any*) -> tuple",type:e=>K(`tuple<${e.map(n=>n.type).join(", ")}>`),canonical:(e,{engine:n})=>n.tuple(...e),eq:Xu,collection:{...si(),keys:e=>["first","second","last"]}},KeyValuePair:{description:"A key/value pair",complexity:8200,signature:"(key: string, value: any) -> tuple<string, unknown>",type:([e,n])=>K(`tuple<string, ${n.type}>`),canonical:(e,{engine:n})=>{let[t,i]=Fr(n,e,["string","any"]);return!t.isValid||!i.isValid?n._fn("KeyValuePair",[t,i]):n.tuple(t,i)}},Single:{description:"A tuple with a single element",complexity:8200,signature:"(value: any) -> tuple<any>",type:([e])=>K(`tuple<${e.type}>`),canonical:(e,{engine:n})=>n.tuple(...vi(n,e,1))},Pair:{description:"A tuple of two elements",complexity:8200,signature:"(first: any, second: any) -> tuple<any, any>",type:([e,n])=>K(`tuple<${e.type}, ${n.type}>`),canonical:(e,{engine:n})=>n.tuple(...vi(n,e,2))},Triple:{description:"A tuple of three elements",complexity:8200,signature:"(first: any, second: any, third: any) -> tuple<any, any, any>",type:([e,n,t])=>K(`tuple<${e.type}, ${n.type}, ${t.type}>`),canonical:(e,{engine:n})=>n.tuple(...vi(n,e,3))},Range:{complexity:8200,signature:"(number, number?, step: number?) -> indexed_collection<number>",type:e=>e.every(t=>t.isInteger)?K("indexed_collection<integer>"):K("indexed_collection<number>"),canonical:(e,{engine:n})=>e.length===0?null:e.length===1?n._fn("Range",[n.One,e[0].canonical]):e.length===2?n._fn("Range",[e[0].canonical,e[1].canonical]):n._fn("Range",[e[0].canonical,e[1].canonical,e[2].canonical.evaluate()]),eq:(e,n)=>{if(e.operator!==n.operator)return!1;let[t,i,r]=rn(e),[s,o,a]=rn(n);return t===s&&i===o&&r===a},collection:{isLazy:e=>!0,count:e=>{let[n,t,i]=rn(e);return i===0?0:!isFinite(n)||!isFinite(t)?1/0:Math.max(0,Math.floor((t-n)/i)+1)},contains:(e,n)=>{let t=n.re;if(Number.isNaN(t))return Ti(n,"number")===!1?!1:void 0;if(n.im!==0||!isFinite(t))return!1;if(g(e)&&e.ops.some(l=>Number.isNaN(l.re)))return;let[i,r,s]=rn(e);if(s===0)return!1;if(s>0){if(t<i||t>r)return!1}else if(t>i||t<r)return!1;let o=(t-i)/s,a=e.engine.tolerance,u=Math.round(o);return u>=0&&Math.abs(o-u)<a},iterator:e=>{let[n,t,i]=rn(e),r=i===0?0:Math.max(0,Math.floor((t-n)/i)+1),s=1;return{next:()=>s===r+1?{value:void 0,done:!0}:(s+=1,{value:e.engine.number(n+i*(s-1-1)),done:!1})}},at:(e,n)=>{if(typeof n!="number")return;let[t,i,r]=rn(e);if(r===0)return;let s=Math.max(0,Math.floor((i-t)/r)+1);if(!(n<1||n>s))return e.engine.number(t+r*(n-1))},indexWhere:void 0,subsetOf:(e,n)=>{if(n.operator==="Range"){let[i,r,s]=rn(e),[o,a,u]=rn(n);return i>=o&&r<=a&&s%u===0}if(!n.isCollection)return!1;let t=1;for(let i of n.each()){if(!e.contains(i)||!e.at(t)?.isSame(i))return!1;t++}return!0},eltsgn:e=>{let[n,t,i]=rn(e);return i===0?"zero":i>0?n<=t?"positive":"negative":n>=t?"positive":"negative"},elttype:e=>{if(!g(e))return"finite_integer";for(let n=1;n<=e.nops;n++)if(!e[`op${n}`].isInteger)return"finite_real";return"finite_integer"}}},Interval:{description:"A set of real numbers between two endpoints. The endpoints may or may not be included.",complexity:8200,lazy:!0,signature:"(number, number) -> set<real>",canonical:([e,n],{engine:t})=>{if(!e||!n)return null;let i=c=>g(c,"Open")?[c.op1,!0]:g(c,"Closed")?[c.op1,!1]:[c,!1],[r,s]=i(e),[o,a]=i(n),[u,l]=Fr(t,[r.canonical,o.canonical],["number","number"]);return!u.isValid||!l.isValid?null:t._fn("Interval",[s?t._fn("Open",[u]):u,a?t._fn("Open",[l]):l])},eq:(e,n)=>{let t=un(e),i=un(n);return!t||!i?!1:t.start===i.start&&t.end===i.end&&t.openStart===i.openStart&&t.openEnd===i.openEnd},collection:{count:e=>1/0,iterator:e=>{let n=un(e);if(!n)return{next:()=>({value:void 0,done:!0})};if(n.start>=n.end)return{next:()=>({value:void 0,done:!0})};let t=e.engine,i=0,r=0;return{next:()=>{let s=Math.pow(2,i);r>=s&&(i++,r=0);let o=(2*r+1)/Math.pow(2,i+1),a=n.start+o*(n.end-n.start);return r++,{value:t.number(a),done:!1}}}},isEmpty:e=>{let n=un(e);if(n)return n.openStart&&n.start===n.end||n.openEnd&&n.start===n.end?!0:n.openStart&&n.openEnd?!1:n.start>=n.end},isFinite:e=>!1,contains:(e,n)=>{let t=un(e);if(!t)return;if(Ti(n,"number")===!1)return!1;let i=n.re;if(!Number.isNaN(i))return n.im!==0?!1:Ju(t,i);let r=t.openStart?n.isGreater(t.start):n.isGreaterEqual(t.start);if(r===!1)return!1;let s=t.openEnd?n.isLess(t.end):n.isLessEqual(t.end);if(s===!1)return!1;if(r===!0&&s===!0)return!0},eltsgn:e=>{let n=un(e);if(!n||n.start===n.end)return"unsigned";if(n.start>=0&&!n.openStart)return"non-negative";if(n.end<=0&&!n.openEnd)return"non-positive";if(n.start>0&&n.end>0)return"positive";if(n.start<0&&n.end<0)return"negative"},elttype:e=>{let n=un(e);return n?isFinite(n.start)&&isFinite(n.end)?"finite_real":"real":"never"}}},Linspace:{complexity:8200,signature:"(start: number, end: number?, count: number?) -> indexed_collection",collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let n=e.op3.re;return isFinite(n)||(n=Nt),Math.max(0,Math.floor(n))},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let t=e.op1.re,i=e.op2.re,r=e.op3.re;if(isFinite(r)||(r=Nt),r=Math.floor(r),!(!isFinite(t)||!isFinite(i))&&!(n<1||n>r))return r===1?e.engine.number(t):e.engine.number(t+(i-t)*(n-1)/(r-1))},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.op1.re,t=e.op2.re,i;isFinite(t)?i=Math.max(0,isFinite(e.op3.re)?e.op3.re:Nt):(t=n,n=1,i=Nt),i=Math.floor(i);let r=i>1?i-1:1,s=1;return{next:()=>s===i+1?{value:void 0,done:!0}:(s+=1,{value:e.engine.number(n+(t-n)*(s-1-1)/r),done:!1})}},contains:(e,n)=>{let t=n.re;if(Number.isNaN(t))return Ti(n,"number")===!1?!1:void 0;if(n.im!==0||!isFinite(t))return!1;if(!g(e))return;let i=e.op1.re,r=e.op2.re;if(Number.isNaN(i)||Number.isNaN(r))return;if(t<i||t>r)return!1;let s=e.op3.re;if(isFinite(s)||(s=Nt),s=Math.floor(s),s===0)return!1;if(s===1)return t===i;let o=(r-i)/(s-1),a=(t-i)/o,u=e.engine.tolerance,l=Math.round(a);return l>=0&&l<=s-1&&Math.abs(a-l)<u}}},Contains:{description:"Return True if the collection contains the given element, False otherwise.",complexity:8200,signature:"(collection, element: any) -> boolean",evaluate:([e,n],{engine:t})=>e.contains(n)?t.True:t.False},Count:{description:["Return the number of elements in the collection."],complexity:8200,signature:"(collection) -> integer",evaluate:([e],{engine:n})=>{if(e.isEmptyCollection)return n.Zero;let t=e.count;if(t!==void 0)return n.number(t)},sgn:([e])=>{let n=e.isEmptyCollection;if(n===!0)return"zero";if(n===!1)return"positive"}},IsEmpty:{description:["Return True if the collection is empty, False otherwise."],complexity:8200,signature:"(collection) -> boolean",evaluate:([e],{engine:n})=>e.isEmptyCollection?n.True:n.False},Map:{description:["Return the collection where each element has been transformed by the mapping function.","Equivalent to `[f(x) for x in xs]`."],complexity:8200,lazy:!0,signature:"(collection, function) -> collection",type:e=>e[0].type,canonical:(e,{engine:n})=>{let t=an(n,e[0]?.canonical,"collection"),i=Ye(e[1]);return!t.isValid||!i?null:n._fn("Map",[t,i])},collection:{isLazy:e=>!0,count:e=>{if(g(e))return e.op1.count},isEmpty:e=>{if(g(e))return e.op1.isEmptyCollection},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=se(e.op2);if(!n)return{next:()=>({value:void 0,done:!0})};let t=e.op1.each();return{next:()=>{for(;;){let{value:i,done:r}=t.next();return r?{value:void 0,done:!0}:{value:n([i])??e.engine.Nothing,done:!1}}}}},at:(e,n)=>{if(!g(e)||!e.isIndexedCollection||typeof n!="number"||!Number.isFinite(n)||n===0)return;let t=e.op1.at(n);if(t)return se(e.op2)?.([t])}}},Filter:{description:["Return the elements of the collection for which the predicate function returns True.","Equivalent to `[x for x in xs if p(x)]`."],complexity:8200,lazy:!0,signature:"(collection, predicate: function) -> collection",type:e=>e[0].type,canonical:(e,{engine:n})=>{let t=an(n,e[0]?.canonical,"collection"),i=Ye(e[1]);return!t.isValid||!i?null:n._fn("Filter",[t,i])},collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;if(!e.op1.isFiniteCollection)return 1/0;let n=0;for(let t of e.each())n++;return n},contains:(e,n)=>{if(!g(e)||!e.contains(n))return!1;let t=se(e.op2);return ie(t([n]))==="True"},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=se(e.op2);if(!n)return{next:()=>({value:void 0,done:!0})};let t=e.op1.each(),i=0,r=e.engine.iterationLimit;return{next:()=>{for(;;){let{value:s,done:o}=t.next();if(i+=1,i>r)throw new je({cause:"iteration-limit-exceeded",message:`Iteration limit of ${r} exceeded while evaluating Filter()`});if(o)return{value:void 0,done:!0};let a=n([s]);if(!a)throw new Error(`Invalid filter predicate. ${tn(e.op2)}`);if(ie(a)==="True")return{value:s,done:!1};if(ie(a)!=="False")throw new Error(`Filter predicate must return "True" or "False". ${tn(e.op2)}`)}}}},at:(e,n)=>{if(typeof n!="number"||!Number.isFinite(n)||n===0||!g(e))return;let t=se(e.op2);if(!t)return;if(n<0){if(!e.op1.isFiniteCollection)return;let r=Array.from(e.each()),s=r.length+n+1;return s<1||s>r.length?void 0:r[s-1]}let i=0;for(let r of e.op1.each()){let s=ie(t([r]));if(s==="True"){if(i+=1,i===n)return r}else if(s!=="False")throw new Error(`Filter predicate must return "True" or "False". ${tn(e.op2)}`)}}}},Reduce:{complexity:8200,lazy:!0,signature:"(collection, function, initial:value?) -> value",canonical:(e,{engine:n})=>{let t=an(n,e[0],"collection"),i=Ye(e[1]);if(!t.isValid||!i)return null;let r=e[2]?.canonical;return r?.isValid?n._fn("Reduce",[t,i,r]):n._fn("Reduce",[t,i])},type:e=>K(hr(e[1].type.type)??"unknown"),evaluate:([e,n,t],{engine:i})=>{if(!e.isFiniteCollection)return;let r=t!==void 0;if(t??=i.Nothing,t.type.matches("real")&&e.type.matches(i.type("collection<real>"))){let o=i._compile(n);if(o.calling==="lambda"&&o.run)return Ki((function*(){let a=r?t.re:NaN,u=!0;for(let l of e.each())u&&!r?a=l.re:a=o.run(a,l.re),u=!1,yield;return i.expr(a)})(),i._timeRemaining)}let s=se(n);return Ki(nl(e,(o,a)=>s([o,a])??i.Nothing,t),i._timeRemaining)}},Join:{description:["Join the elements of some collections into a flat collection."],complexity:8200,signature:"(collection*) -> collection",type:em,collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let n=0;for(let t of e.ops){let i=t.count;if(i===void 0)return;if(!Number.isFinite(i))return 1/0;n+=i}return n},contains:(e,n)=>g(e)?e.ops.some(t=>t.contains(n)):!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.ops.map(i=>i.each()),t=0;return{next:()=>{for(;;){let{value:i,done:r}=n[t].next();if(!r)return{value:i,done:!1};if(t+=1,t>=n.length)return{value:void 0,done:!0}}}}},at:(e,n)=>{if(!(typeof n!="number"||!g(e))){if(n<0){let t=0;for(let i of e.ops){let r=i.count;if(r===void 0||!Number.isFinite(r))return;t+=r}n=t+n+1}if(!(n<1))for(let t of e.ops){let i=t.count;if(i===void 0)return;if(n<=i)return t.at(n);n-=i}}}}},At:{description:["Access an element of an indexed collection.","If the index is negative, it is counted from the end.","Multiple indices can be provided to access nested collections (e.g., matrices).","If the index is a finite collection of booleans, returns the elements where the mask is True.","If the index is a finite collection of integers, returns the elements at those indices."],complexity:8200,signature:"(value: indexed_collection | dictionary, index: (number|string|indexed_collection)+) -> unknown",type:([e])=>e.operatorDefinition?.collection?.elttype?.(e)??Fe(e.type.type)??"any",evaluate:(e,{engine:n})=>{let t=e[0],i=1;for(;e[i];){let r=e[i];if(Ca(t)){if(!ue(r))return;t=t.get(r.string)??n.Nothing,i+=1;continue}let o=t.baseDefinition?.collection?.at;if(!o)return;let a=ue(r)?r.string:void 0;if(a!==void 0){t=o(t,a)??n.Nothing,i+=1;continue}if(r.isCollection&&r.isFiniteCollection){let l=Array.from(r.each()),c=l.every(p=>{let d=ie(p);return d==="True"||d==="False"}),f=[];if(c)l.forEach((p,d)=>{if(ie(p)!=="True")return;let b=o(t,d+1);b!==void 0&&f.push(b)});else for(let p of l){let d=p.re;if(!Number.isInteger(d))return;let b=o(t,d);b!==void 0&&f.push(b)}t=n._fn("List",f),i+=1;continue}let u=r.re;if(!Number.isInteger(u))return;t=o(t,u)??n.Nothing,i+=1}return t}},Take:{description:["Return `n` elements from a collection."],complexity:8200,signature:"(xs: indexed_collection, count: number) -> indexed_collection",type:([e])=>`list<${G(Fe(e.type.type)??"any")}>`,evaluate:(e,{engine:n,materialization:t})=>{if(!t)return;let i=n._fn("Take",e),r=Array.from(i.each());return n._fn("List",r)},collection:{isLazy:e=>!0,count:Ku,isEmpty:e=>{if(!g(e))return;let[n,t]=e.ops;if(n.isEmptyCollection)return!0;if(n.isFiniteCollection===!1)return!1;let i=Math.max(0,W(t)??0),r=n.count;if(r!==void 0)return Number.isFinite(i)?Math.min(r,i)===0:!1},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},iterator:nm,at:(e,n)=>{if(typeof n!="number"||n===0||!g(e))return;let t=Math.max(0,W(e.op2)??0);if(t===0)return;if(n>0)return n>t?void 0:e.op1.at(n);let i=Ku(e);if(!(i===void 0||i===0)&&!(n<-i))return e.op1.at(i+n)}}},Drop:{description:["Return the collection without the first n elements."],complexity:8200,signature:"(xs: indexed_collection, count: number) -> indexed_collection",type:([e])=>`list<${G(Fe(e.type.type)??"any")}>`,collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let[n,t]=e.ops,i=n.count;if(i===void 0)return;if(!Number.isFinite(i))return 1/0;if(n.isEmptyCollection)return 0;let r=W(t)??0;return r>=i?0:Math.max(0,i-r)},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let[n,t]=e.ops,i=W(t)??0;if(i<=0)return n.each();let r=n.count,s=i+1;return{next:()=>{if(r!==void 0&&s>r)return{value:void 0,done:!0};let o=n.at(s++);return o===void 0?{value:void 0,done:!0}:{value:o,done:!1}}}},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let[t,i]=e.ops,r=W(i)??0;if(r<=0)return t.at(n);if(n<0){let s=t.count;return s!==void 0&&-n>s-r?void 0:t.at(n)}if(!(n<1))return t.at(n+r)}}},First:{complexity:8200,signature:"(any) -> any",type:([e])=>e.operatorDefinition?.collection?.elttype?.(e)??"any",evaluate:([e],{engine:n})=>e.isCollection?e.at(1)??n.Nothing:n.error(["incompatible-type","'collection'",e.type.toString()])},Second:{complexity:8200,signature:"(any) -> any",type:([e])=>e.operatorDefinition?.collection?.elttype?.(e)??"any",evaluate:([e],{engine:n})=>e.isCollection?e.at(2)??n.Nothing:n.error(["incompatible-type","'collection'",e.type.toString()])},Third:{complexity:8200,signature:"(any) -> any",type:([e])=>e.operatorDefinition?.collection?.elttype?.(e)??"any",evaluate:([e],{engine:n})=>e.isCollection?e.at(3)??n.Nothing:n.error(["incompatible-type","'collection'",e.type.toString()])},Last:{complexity:8200,signature:"(collection) -> any",type:([e])=>e.operatorDefinition?.collection?.elttype?.(e)??"any",evaluate:([e],{engine:n})=>e.at(-1)??n.Nothing},Rest:{description:["Return the collection without the first element.","If the collection has only one element, return an empty collection."],complexity:8200,signature:"(indexed_collection) -> indexed_collection",collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let n=e.op1.count;if(n!==void 0)return Math.max(0,n-1)},isEmpty:e=>{if(!g(e))return;if(e.op1.isEmptyCollection)return!0;let n=e.op1.count;if(n!==void 0)return n<=1},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.op1,t=n.count,i=2;return{next:()=>{if(t!==void 0&&i>t)return{value:void 0,done:!0};let r=n.at(i);return r===void 0?{value:void 0,done:!0}:(i+=1,{value:r,done:!1})}}},at:(e,n)=>{if(typeof n=="number"&&g(e))return e.op1.at(n>0?n+1:n)}}},Most:{complexity:8200,description:["Return the collection without the last element.","If the collection has only one element, return an empty collection."],signature:"(indexed_collection) -> indexed_collection",collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let n=e.op1.count;if(n!==void 0)return Math.max(0,n-1)},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},isEmpty:e=>{if(!g(e))return;let n=e.op1.count;if(n!==void 0)return n<=1},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.op1.count;if(n===void 0||n<=1)return{next:()=>({value:void 0,done:!0})};let t=1,i=n-1;return{next:()=>t>i?{value:void 0,done:!0}:{value:e.op1.at(t++),done:!1}}},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let t=e.op1.count;if(t!==void 0&&(n<1&&(n=t+1+n),!(n<1||n>t-1)))return e.op1.at(n)}}},Slice:{description:["Return a range of elements from an indexed collection.","If the index is negative, it is counted from the end."],complexity:8200,signature:"(value: indexed_collection, start: number, end: number) -> list",type:([e])=>K(`list<${G(Fe(e.type.type)??"any")}>`),collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let n=e.op1.count;if(n===void 0)return;let t=W(e.op2)??1;if(t<1&&(t=n+1+t),t<1&&(t=1),t>n)return 0;let i=W(e.op3)??n;return i<1&&(i=n+1+i),i<1&&(i=1),i>n&&(i=n),Math.max(0,i-t+1)},isFinite:e=>!0,at:(e,n)=>{if(typeof n!="number"||!g(e))return;let t=e.op1.count;if(t===void 0)return;let i=W(e.op2)??1;if(i<1&&(i=t+1+i),i<1&&(i=1),i>t)return;let r=W(e.op3)??t;r<1&&(r=t+1+r),r<1&&(r=1),r>t&&(r=t);let s=r-i+1;if(!(s<=0)&&(n<0&&(n=s+1+n),!(n<1||n>s)))return e.op1.at(i+n-1)},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=W(e.op2)??1,t=e.op1.count;if(t===void 0)return{next:()=>({value:void 0,done:!0})};if(n<1&&(n=t+1+n),n<1&&(n=1),n>t)return{next:()=>({value:void 0,done:!0})};let i=W(e.op3)??t;i<1&&(i=t+1+i),i<1&&(i=1),i>t&&(i=t);let r=n,s=i;return{next:()=>{if(r>s)return{value:void 0,done:!0};let o=e.op1.at(r);return r+=1,{value:o,done:!1}}}}}},Reverse:{complexity:8200,signature:"(indexed_collection) -> indexed_collection",type:([e])=>e.type,collection:{isLazy:e=>!0,count:e=>{if(g(e))return e.op1.count},isEmpty:e=>{if(g(e))return e.op1.isEmptyCollection},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},contains:(e,n)=>g(e)?e.op1.contains(n)??!1:!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=-1;return{next:()=>{if(n===0)return{value:void 0,done:!0};let t=e.op1.at(n);return n-=1,{value:t,done:!1}}}},at:(e,n)=>{if(typeof n=="number"&&g(e))return e.op1.at(-n)}}},RotateLeft:{description:"Rotate the elements of the collection to the left by n positions.",complexity:8200,signature:"(indexed_collection, integer?) -> indexed_collection",collection:{isLazy:e=>!0,count:e=>{if(g(e))return e.op1.count},isEmpty:e=>{if(g(e))return e.op1.isEmptyCollection},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},contains:(e,n)=>g(e)?e.op1.contains(n)??!1:!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.op1.count;if(n===void 0||n<=0)return{next:()=>({value:void 0,done:!0})};let t=W(e.op2)??1;t=(t%n+n)%n;let i=1,r=n;return{next:()=>{if(i===r+1)return{value:void 0,done:!0};i+=1;let s=e.op1.at((i-1-1+t)%n+1);return s===void 0?{value:void 0,done:!0}:{value:s,done:!1}}}},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let t=e.op1.count;if(t===void 0||t<=0||(n<1&&(n=t+1+n),n<1||n>t))return;let i=W(e.op2)??1;return i=(i%t+t)%t,e.op1.at((n-1+i)%t+1)}}},RotateRight:{description:"Rotate the elements of the collection to the right by n positions.",complexity:8200,signature:"(indexed_collection, integer?) -> indexed_collection",collection:{isLazy:e=>!0,count:e=>{if(g(e))return e.op1.count},contains:(e,n)=>g(e)?e.op1.contains(n)??!1:!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.op1.count;if(n===void 0||n<=0)return{next:()=>({value:void 0,done:!0})};let t=W(e.op2)??1;t=(t%n+n)%n;let i=1;return{next:()=>{if(i===n+1)return{value:void 0,done:!0};i+=1;let r=(i-1-1+(n-t))%n+1,s=e.op1.at(r);return s===void 0?{value:void 0,done:!0}:{value:s,done:!1}}}},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let t=e.op1.count;if(t===void 0||t<=0||(n<1&&(n=t+1+n),n<1||n>t))return;let i=W(e.op2)??1;i=(i%t+t)%t;let r=(n-1+(t-i))%t+1;return e.op1.at(r)}}},IndexOf:{description:"Return the 1-based index of the first occurrence of value in collection, or 0 if not found.",complexity:8200,signature:"(collection, any) -> integer",evaluate:([e,n],{engine:t})=>{let i=e.indexWhere(r=>r.isSame(n))??void 0;return t.number(i??0)}},IndexWhere:{description:"Return the 1-based index of the first element satisfying the predicate, or 0 if not found.",complexity:8200,signature:"(collection, function) -> integer",evaluate:([e,n],{engine:t})=>{let i=se(n);if(!i)return t.Zero;let r=e.indexWhere(s=>{let o=ie(i([s]));if(o==="True")return!0;if(o==="False")return!1;throw new Error(`Filter predicate must return "True" or "False". ${tn(n)}`)})??void 0;return t.number(r??0)}},Find:{description:"Return the first element of the collection satisfying the predicate, or Nothing if none found.",complexity:8200,signature:"(collection, function) -> any",type:e=>e[0].type,evaluate:([e,n],{engine:t})=>{let i=se(n);if(!i)return t.Nothing;for(let r of e.each()){let s=ie(i([r]));if(s!=="False"){if(s==="True")return r;throw new Error(`Filter predicate must return "True" or "False". ${tn(n)}`)}}return t.Nothing}},CountIf:{description:"Return the number of elements in the collection satisfying the predicate.",complexity:8200,signature:"(collection, function) -> integer",evaluate:([e,n],{engine:t})=>{let i=se(n);if(!i)return t.Zero;let r=0;for(let s of e.each()){let o=ie(i([s]));if(o!=="False")if(o==="True")r++;else throw new Error(`Filter predicate must return "True" or "False". ${tn(n)}`)}return t.number(r)}},Position:{description:"Return a list of indexes of elements in the collection satisfying the predicate.",complexity:8200,signature:"(collection, function) -> list<integer>",type:()=>"list<integer>",evaluate:([e,n],{engine:t})=>{let i=se(n);if(!i)return t.function("List",[]);let r=[],s=1;for(let o of e.each()){let a=ie(i([o]));if(a==="True")r.push(t.number(s));else if(a!=="False")throw new Error(`Filter predicate must return "True" or "False". ${tn(n)}`);s++}return t.function("List",r)}},Ordering:{description:"Return the indexes that would sort the collection.",complexity:8200,signature:"(indexed_collection, function?) -> list<integer>",evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return t.function("List",[]);let i=Qu(e,n);return i?t.function("List",i):t.function("List",[])}},Sort:{description:"Return the elements of the collection sorted according to the given comparison function.",complexity:8200,signature:"(indexed_collection, function?) -> indexed_collection",type:e=>e[0].type,evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return t.function(e.operator,[]);let i=Qu(e,n);if(i)return t.function(e.operator,i.map(r=>e.at(r)))}},Shuffle:{description:"Randomize the order of the elements in the collection. With an optional `seed` argument, the shuffle is deterministic.",complexity:8200,signature:"(indexed_collection, real?) -> indexed_collection",type:e=>e[0].type,evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return;let i=Array.from(e.each()),r=n?.re;if(r!==void 0&&!Number.isNaN(r)){let s=r;for(let o=i.length-1;o>0;o--){let a=Math.floor(zu(s)*(o+1));[i[o],i[a]]=[i[a],i[o]],s=Gu(s)}}else for(let s=i.length-1;s>0;s--){let o=Math.floor(Math.random()*(s+1));[i[s],i[o]]=[i[o],i[s]]}return t.function(e.operator,i)}},Tabulate:{description:"Create a collection by applying a function to each index in the specified dimensions.",complexity:8200,lazy:!0,signature:"(function, integer, integer?) -> collection",canonical:(e,{engine:n})=>{let t=Ye(e[0]);return t?e[2]?n._fn("Tabulate",[t,an(n,e[1]?.canonical,"integer"),an(n,e[2]?.canonical,"integer")]):n._fn("Tabulate",[t,an(n,e[1]?.canonical,"integer")]):null},evaluate:(e,{engine:n})=>{let t=se(e[0]);if(!t)return;if(e.length===1)return n._fn("List",[]);let i=e.slice(1).map(s=>W(s));if(i.some(s=>s===null||s<=0))return;if(i.length===1)return n._fn("List",Array.from({length:i[0]??0},(s,o)=>t([n.number(o+1)])??n.Nothing));let r=(s,o,a=0)=>{if(a===s.length){let l=o.map(c=>n.number(c));return t(l)??n.Nothing}let u=["List"];for(let l=1;l<=s[a];l++)o[a]=l,u.push(r(s,o,a+1));return u};return n.expr(r(i,Array(i.length).fill(0)))}},Tally:{description:"Return a tuple with the unique elements of the collection and their respective counts.",complexity:8200,signature:"(collection) -> tuple<list, list<integer>>",type:([e],{engine:n})=>{let t=e.type.type;return t==="string"?K("tuple<list<string>, list<integer>>"):K(`tuple<list<${G(Fe(t)??"any")}>, list<integer>>`)},evaluate:(e,{engine:n})=>{if(!e[0].isFiniteCollection)return;let[t,i]=Wu(e[0]);return n.tuple(n.function("List",t),n.function("List",i))}},Unique:{description:"Return a list of the unique elements of the collection.",complexity:8200,signature:"(collection) -> list",type:([e])=>`list<${G(Fe(e.type.type)??"any")}>`,evaluate:(e,{engine:n})=>{if(!e[0].isFiniteCollection)return;let[t,i]=Wu(e[0]);return n.function("List",t)}},Partition:{wikidata:"Q381060",complexity:8200,signature:"(collection, integer | function) -> list",type:([e])=>`list<${G(Fe(e.type.type)??"any")}>`,evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return;let i=W(n);if(i!==null&&i>0){let a=Array.from(e.each()),u=[],l=Math.ceil(a.length/i);for(let c=0;c<i;c++){let f=a.slice(c*l,(c+1)*l);u.push(t.function("List",f))}return t.function("List",u)}let r=se(n);if(!r)return;let s=[],o=[];for(let a of e.each()){let u=ie(r([a]));if(u==="True")s.push(a);else if(u==="False")o.push(a);else throw new Error(`Partition predicate must return "True" or "False". ${tn(n)}`)}return t.function("List",[t.function("List",s),t.function("List",o)])}},Chunk:{description:"Split the collection into `k` nearly equal-sized chunks.",complexity:8200,signature:"(collection, integer) -> list<list>",evaluate:([e,n],{engine:t})=>{let i=W(n);if(!e.isFiniteCollection||i===null||i<=0)return;let r=Array.from(e.each()),s=[],o=Math.ceil(r.length/i);for(let a=0;a<i;a++){let u=r.slice(a*o,(a+1)*o);s.push(t.function("List",u))}return t.function("List",s)}},GroupBy:{description:["Partition the collection into a dictionary of lists based on the key returned by the function."],complexity:8200,signature:"(collection, function) -> dictionary<list>",evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return;let i=se(n);if(!i)return;let r={};for(let s of e.each()){let o=i([s])??t.Nothing,a=(_(o)?o.symbol:void 0)??(ue(o)?o.string:void 0)??o.toString();a in r||(r[a]=[]),r[a].push(s)}return t.function("Dictionary",Object.entries(r).map(([s,o])=>t._fn("Tuple",[t.string(s),t.function("List",o)])))}},Zip:{description:"Combine multiple collections element-wise into a list of tuples. The result has the length of the shortest input.",complexity:8200,signature:"(indexed_collection+) -> list",collection:{isLazy:e=>!0,count:Vr,isFinite:e=>{if(!g(e))return;if(e.nops===0)return!0;let n=!1;for(let t of e.ops){let i=t.isFiniteCollection;if(i===!0)return!0;i===void 0&&(n=!0)}return n?void 0:!1},isEmpty:e=>{if(!g(e))return;if(e.nops===0)return!0;let n=!1;for(let t of e.ops){let i=t.isEmptyCollection;if(i===!0)return!0;i===void 0&&(n=!0)}return n?void 0:!1},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=Vr(e);if(n===void 0||n<=0)return{next:()=>({value:void 0,done:!0})};let t=1;return{next:()=>{if(t===n+1)return{value:void 0,done:!0};t+=1;let i=e.ops.map(r=>r.at(t-1));return i.some(r=>r===void 0)?{value:void 0,done:!0}:{value:e.engine.tuple(...i),done:!1}}}},at:(e,n)=>{if(typeof n!="number"||n<1||!g(e))return;let t=Vr(e);if(t===void 0||n<1||n>t)return;let i=e.ops.map(r=>r.at(n));if(!i.some(r=>r===void 0))return e.engine.tuple(...i)}}},Iterate:{description:"Produce an infinite sequence by repeatedly applying a function to the previous value, starting with an initial value.",complexity:8200,signature:"((index: integer, acc:any) -> any, initial: any?) -> list",canonical:([e,n],{engine:t})=>{let i=Ye(e);if(!i)return null;let r=n?.canonical;return r?t._fn("Iterate",[i,r]):t._fn("Iterate",[i])},collection:{isLazy:e=>!0,count:()=>1/0,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=se(e.op1);if(!n)return{next:()=>({value:void 0,done:!0})};let t=e.op2??e.engine.Nothing,i=0;return{next:()=>(i+=1,t=n([e.engine.number(i),t])??e.engine.Nothing,{value:t,done:!1})}},at:(e,n)=>{if(typeof n!="number"||n<1||!g(e))return;let t=se(e.op1);if(!t)return;let i=e.op2??e.engine.Nothing;for(let r=1;r<n;r++)i=t([e.engine.number(r),i])??e.engine.Nothing;return i}}},Repeat:{description:"Produce a sequence by repeating a single value. With 1 argument, returns an infinite sequence; with 2 arguments (value, count), returns a finite list of `count` copies.",complexity:8200,signature:"(value: any, count: integer?) -> list",evaluate:(e,{engine:n})=>{if(e.length!==2)return;let t=W(e[1]);if(t===null)return;let i=Math.max(0,t);if(!(i>n.maxCollectionSize))return n._fn("List",Array(i).fill(e[0]))},collection:{isLazy:e=>g(e)&&e.ops?.length===1,count:e=>{if(g(e)){if(e.ops?.length===2){let n=W(e.op2);return n!==null?Math.max(0,n):void 0}return 1/0}},isEmpty:e=>{if(g(e)){if(e.ops?.length===2){let n=W(e.op2);return n!==null?n<=0:void 0}return!1}},isFinite:e=>g(e)&&e.ops?.length===2,contains:(e,n)=>{if(!g(e))return!1;if(e.ops?.length===2){let t=W(e.op2);if(t!==null&&t<=0)return!1}return e.op1.isSame(n)},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};if(e.ops?.length===2){let n=W(e.op2);if(n===null)return{next:()=>({value:void 0,done:!0})};let t=Math.max(0,n),i=0;return{next:()=>i++<t?{value:e.op1,done:!1}:{value:void 0,done:!0}}}return{next:()=>({value:e.op1,done:!1})}},at:(e,n)=>{if(g(e)&&typeof n=="number"){if(e.ops?.length===2){let t=W(e.op2),i=t!==null?Math.max(0,t):0;if(n<1||n>i)return}else if(n<1)return;return e.op1}}}},Cycle:{description:"Produce an infinite sequence by cycling through the elements of a finite collection.",complexity:8200,signature:"(list) -> list",collection:{isLazy:e=>!0,count:e=>{if(g(e))return e.op1.isEmptyCollection?0:1/0},isEmpty:e=>{if(g(e))return e.op1.isEmptyCollection},isFinite:e=>{if(g(e))return e.op1.isEmptyCollection},contains:(e,n)=>g(e)?e.op1.contains(n)??!1:!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=1,t=e.op1.count;return t===void 0||t===0?{next:()=>({value:void 0,done:!0})}:{next:()=>{let i=(n-1)%t+1,r=e.op1.at(i);return r===void 0?{value:void 0,done:!0}:(n+=1,{value:r,done:!1})}}},at:(e,n)=>{if(typeof n!="number"||n<1||!g(e))return;let t=e.op1.count;if(t===void 0||t===0)return;let i=(n-1)%t+1;return e.op1.at(i)}}},Fill:{description:"Produce a 2D list (matrix) by applying a function to each pair of row and column indexes.",complexity:8200,signature:"(function, tuple) -> list",collection:{isLazy:e=>!0,count:e=>!g(e)||!g(e.op2)?void 0:e.op2.ops.map(t=>W(t)??0)[0]??0,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=se(e.op1);if(!n)return{next:()=>({value:void 0,done:!0})};if(!g(e.op2))return{next:()=>({value:void 0,done:!0})};let t=e.op2.ops.map(a=>W(a)??0),i=t[0]??0,r=t[1]??0,s=i,o=1;return{next:()=>{if(o===s+1)return{value:void 0,done:!0};o+=1;let a=[];for(let u=1;u<=r;u++)a.push(n([e.engine.number(o-1),e.engine.number(u)])??e.engine.Nothing);return{value:e.engine.function("List",a),done:!1}}}},at:(e,n)=>{if(typeof n!="number"||n<1||!g(e))return;let t=se(e.op1);if(!t||!g(e.op2))return;let i=e.op2.ops.map(u=>W(u)??0),r=i[0]??0,s=i[1]??0;if(n>r*s)return;let o=Math.ceil(n/s),a=(n-1)%s+1;return t([e.engine.number(o),e.engine.number(a)])??e.engine.Nothing}}},ListFrom:{description:"Create a list from the elements of a collection.",complexity:8200,signature:"(value*) -> list",type:e=>{if(e.length===0)return"list";let n="unknown";for(let t of e){if(t.isCollection&&!t.isFiniteCollection)return"list";n=Ee(n,Fe(t.type.type)??n)}return K(`list<${G(n)}>`)},evaluate:(e,{engine:n})=>{let t=[];for(let i of e)if(!i.isCollection)t.push(i);else{if(!i.isFiniteCollection)return;t.push(...Array.from(i.each()))}return n.function("List",t)}},SetFrom:{description:"Create a set from the elements of a collection.",complexity:8200,signature:"(value*) -> set",type:e=>{if(e.length===0)return"set";let n="unknown";for(let t of e){if(t.isCollection&&!t.isFiniteCollection)return"set";n=Ee(n,Fe(t.type.type)??n)}return K(`set<${G(n)}>`)},evaluate:(e,{engine:n})=>{let t=[];for(let i of e)if(!i.isCollection)t.push(i);else{if(!i.isFiniteCollection)return;t.push(...Array.from(i.each()))}return n.function("Set",t)}},TupleFrom:{description:"Create a tuple from the elements of a collection.",complexity:8200,signature:"(value*) -> tuple",evaluate:(e,{engine:n})=>{let t=[];for(let i of e)if(!i.isCollection)t.push(i);else{if(!i.isFiniteCollection)return;t.push(...Array.from(i.each()))}return n.tuple(...t)}},DictionaryFrom:{description:"Create a dictionary from the elements of a collection of (key, value) pairs.",complexity:8200,signature:"(collection) -> dictionary",evaluate:([e],{engine:n})=>{if(!e.isCollection)return;if(g(e,"Record"))return n.function("Dictionary",[...e.ops]);let t=[];for(let i of e.each()){if(!g(i)||i.nops!==2)throw new Error(`Expected a collection of pairs, got ${i.type}`);let r=i.op1,s=i.op2;if(!ue(r))throw new Error(`Expected a string key, got ${r.type}`);t.push(n.tuple(r,s))}return n.function("Dictionary",t)}},RecordFrom:{description:"Create a record from the elements of a collection of (key, value) pairs.",complexity:8200,signature:"(collection) -> record",evaluate:([e],{engine:n})=>{if(!e.isCollection)return;if(g(e,"Dictionary"))return n.function("Record",[...e.ops]);let t=[];for(let i of e.each()){if(!g(i)||i.nops!==2)throw new Error(`Expected a collection of pairs, got ${i.type}`);let r=i.op1,s=i.op2;if(!ue(r))throw new Error(`Expected a string key, got ${r.type}`);t.push(n.tuple(r,s))}return n.function("Record",t)}}};function rn(e){if(!g(e))return[1,0,0];if(e.nops===0)return[1,0,0];let n=e.op1.re;if(!isFinite(n)&&!n&&(n=1),e.nops===1)return[1,n,1];let t=e.op2.re;if(!isFinite(t)&&!t&&(t=1),e.nops===2)return[n,t,t>=n?1:-1];let i=e.op3.re;return!isFinite(i)&&!i&&(i=1),[n,t,i]}function Xp(e,{engine:n}){let t=e[0];if(e.length===1&&g(t,"Matrix")){let[r,s,o]=t.ops;if(!s||ue(s)&&s.string==="..")return o?n._fn("Matrix",[r,n.string("[]"),o]):n._fn("Matrix",[r,s])}let i=e.map(r=>g(r,"Delimiter")?g(r.op1,"Sequence")?n._fn("List",ju(n,r.op1.ops)):n._fn("List",[r.op1?.canonical??n.Nothing]):r.canonical);return n._fn("List",i)}function Qp(e,{engine:n}){if(e=e.map(r=>r.canonical),Ve(e)!==null)return n._fn("Set",[...e]);let t=[],i=r=>t.some(s=>s.isSame(r));for(let r of e)i(r)||t.push(r);return n._fn("Set",t)}function Ve(e){if(e.length!==2)return null;let[n,t]=e,i=r=>r.isCanonical?r:r.canonical;if(g(t,"Element")&&t.nops>=2){if(!_(t.op1))return null;let r=t.op1.symbol;if(!n.has(r))return null;let s=t.nops>=3&&ie(t.op3)!=="Nothing"?t.op3:void 0;return{body:n,variable:r,domain:t.op2,condition:s}}if(g(t,"Condition")&&t.nops>=1){let r=t.op1;if(g(n,"Element")&&n.nops===2&&_(n.op1))return{body:n.op1,variable:n.op1.symbol,domain:i(n.op2),condition:i(r)};if(g(r,"Element")&&r.nops===2&&_(r.op1)){let s=r.op1.symbol;if(n.has(s))return{body:n,variable:s,domain:i(r.op2),condition:void 0}}if(g(r,"And")){let s=r.ops.filter(a=>g(a,"Element")&&a.nops===2&&_(a.op1)&&n.has(a.op1.symbol)),o=s.length===1?s[0]:void 0;if(o&&g(o,"Element")&&_(o.op1)){let a=r.ops.filter(c=>c!==o).map(i),u=n.engine,l=a.length===0?void 0:a.length===1?a[0]:u._fn("And",a);return{body:n,variable:o.op1.symbol,domain:i(o.op2),condition:l}}}return{body:n,variable:_(n)?n.symbol:void 0,domain:void 0,condition:r}}return null}function An(e){let{body:n,variable:t,domain:i,condition:r}=e;if(t===void 0||i===void 0)return;let s=n.engine,o=c=>Br(s._fn("Element",[s.symbol(t),c,...r?[r]:[]]),s),a=o(i);if(a.status!=="success"){let c=i.evaluate();c.isSame(i)||(a=o(c))}if(a.status!=="success")return;let u=_(n)&&n.symbol===t,l=[];for(let c of a.values){let f=u?c:n.subs({[t]:c}).evaluate();l.some(p=>p.isSame(f))||l.push(f)}return l}function el(e,n){let t=!1;for(let i of e){if(n.isSame(i))return!0;if(P(n)&&P(i)){let r=n.isEqual(i);if(r===!0)return!0;r!==!1&&(t=!0)}else ue(n)&&ue(i)||(t=!0)}return t?void 0:!1}function Kp(e,n){let t=An(e);if(t!==void 0)return el(t,n);if(e.domain!==void 0&&e.variable!==void 0&&_(e.body)&&e.body.symbol===e.variable){let i=e.domain.contains(n);if(i===!1)return!1;let r=!0;if(e.condition!==void 0)if(P(n)||ue(n)){let s=e.condition.subs({[e.variable]:n}).evaluate();r=ie(s)==="True"?!0:ie(s)==="False"?!1:void 0}else r=void 0;if(r===!1)return!1;if(i===!0&&r===!0)return!0}}function Wu(e){let n=[],t=[],i=r=>{for(let s=0;s<n.length;s++)if(n[s].isSame(r))return s;return-1};for(let r of e.each()){let s=i(r);s>=0?t[s]++:(n.push(r),t.push(1))}return[n,t]}function*nl(e,n,t){let i=t;for(let r of e.each()){let s=n(i,r);if(s===null)return;yield i,i=s}return i}function em(e){return e.some(n=>n.type.matches("record"))?"record":e.some(n=>n.type.matches("dictionary"))?"dictionary":e.some(n=>n.type.matches("set"))?"set":"list"}function Xu(e,n){return e.operator!==n.operator||!g(e)||!g(n)||e.nops!==n.nops?!1:e.ops.every((t,i)=>t.isSame(n.ops[i]))}function Qu(e,n=void 0){let t=n?se(n):void 0,i=t?(o,a)=>{let u=t([o,a]);return u?.isNegative?-1:u?.isSame(0)?0:1}:(o,a)=>o.isLess(a)?-1:o.isEqual(a)?0:1,r=e.count;if(r===void 0||!Number.isFinite(r)||r<1)return;let s=Array.from({length:r},(o,a)=>a+1);return s.sort((o,a)=>{let u=e.at(o),l=e.at(a);return i(u,l)}),s}function qr(e){if(e.length===0)return[];let n=[];for(let t of e)ie(t)!=="Nothing"&&(g(t,"Sequence")?n.push(...qr([...t.ops])):ue(t)?n.push(t):t.isCollection?n.push(...qr([...t.each()])):n.push(t));return n}function nm(e){if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=Math.max(0,W(e.op2)??0);if(n===0)return{next:()=>({value:void 0,done:!0})};let t=1,i=0;return{next:()=>{if(i>=Math.abs(n))return{value:void 0,done:!0};let r=e.op1.at(t);return r?(t+=1,i+=1,{value:r,done:!1}):{value:void 0,done:!0}}}}function Ku(e){if(!g(e))return;let[n,t]=e.ops,i=n.count;if(i===void 0)return;let r=Math.max(0,W(t)??0);return Number.isFinite(r)?Math.min(i,r):1/0}function Vr(e){if(!g(e))return;let n=e.ops.map(t=>t.count);if(!n.some(t=>t===void 0))return n.some(t=>!Number.isFinite(t))?1/0:n.length===0?0:Math.min(...n)}function tl(e){e?.operator,g(e);let n=1,t=n+Fn,i,r=!0,s=e,o=s.op1;i=_(o)?o.symbol:void 0,n=Math.floor(s.op2.re),isNaN(n)&&(n=1),Number.isFinite(n)||(r=!1);let a=s.op3;return(_(a)?a.symbol:void 0)==="Nothing"||a.isInfinity?(r=!1,t=1/0):(isNaN(a.re)||(t=Math.floor(a.re??t)),Number.isFinite(t)||(r=!1)),r||(!Number.isFinite(n)&&!Number.isFinite(t)?(n=-Fn/2,t=n+Fn):Number.isFinite(n)?t=n+Fn:n=t-Fn),{index:i,lower:n,upper:t,isFinite:r}}var x=class e{static FOLD_OPERAND_PREC=1e3;static compile(n,t,i=0){if(n===void 0)return"";if(!n.isValid)throw new Error(`Cannot compile invalid expression: "${n.toString()}"`);if(_(n)){let r=n.symbol,s=t.operators?.(r);if(s!==void 0)return`(a,b) => a ${s[0]} b`;let o=t.var?.(r);return o!==void 0?o:e.tryFoldKnownSymbol(n.engine,r,t)??r}if(P(n)){if(n.im!==0){if(!t.complex)throw new Error("Complex numbers are not supported by this target");return t.complex(n.re,n.im)}return t.number(n.re)}if(ue(n))return t.string(n.string);if(!g(n))throw new Error(`Cannot compile expression: "${n.toString()}"`);return e.compileExpr(n.engine,n.operator,n.ops,i,t)}static compileExpr(n,t,i,r,s){if(t==="Error")throw new Error("Error");if(t==="Sequence")return i.length===0?"":`(${i.map(u=>e.compile(u,s,r)).join(", ")})`;if(t==="Sum"||t==="Product"){let u=s.functions?.(t);return typeof u=="function"?u(i,l=>e.compile(l,s),s):typeof u=="string"?`${u}(${i.map(l=>e.compile(l,s)).join(", ")})`:e.compileLoop(t,i,s)}let o=s.operators?.(t);if(o!==void 0&&!i.some(l=>e.isComplexValued(l))){if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(o[0]))return`${o[0]}(${i.map(c=>e.compile(c,s)).join(", ")})`;if(i.every(c=>!c.isCollection)){if(yr(t)&&i.length>2){let f=[];for(let p=0;p<i.length-1;p++)f.push(e.compileExpr(n,t,[i[p],i[p+1]],o[1],s));return`(${f.join(") && (")})`}let c;if(i.length===1)c=`${o[0]}${e.compile(i[0],s,o[1])}`;else{let f=t==="Power";c=i.map((p,d)=>{let b=f&&d<i.length-1?o[1]+1:o[1];return e.compile(p,s,b)}).join(` ${o[0]} `)}return o[1]<r?`(${c})`:c}}if(t==="Function"){let u=s.functions?.(t);if(typeof u=="function")return u(i,c=>e.compile(c,s),s);let l=i.slice(1).map(c=>_(c)?c.symbol:"_");return`((${l.join(", ")}) => ${e.compile(i[0].canonical,{...s,var:c=>l.includes(c)?c:s.var(c)})})`}if(t==="Declare"){let u=_(i[0])?i[0].symbol:"_";return s.declare?s.declare(u):`let ${u}`}if(t==="Assign")return`${_(i[0])?i[0].symbol:"_"} = ${e.compile(i[1],s)}`;if(t==="Return")return`return ${e.compile(i[0],s)}`;if(t==="Break")return"break";if(t==="Continue")return"continue";if(t==="Loop"){let u=s.functions?.(t);return typeof u=="function"?u(i,l=>e.compile(l,s),s):e.compileForLoop(i,s)}if(t==="If"){if(i.length!==3)throw new Error("If: wrong number of arguments");let u=s.functions?.(t);return u?typeof u=="function"?u(i,l=>e.compile(l,s),s):`${u}(${i.map(l=>e.compile(l,s)).join(", ")})`:`((${e.compile(i[0],s)}) ? (${e.compile(i[1],s)}) : (${e.compile(i[2],s)}))`}if(t==="Which"){if(i.length<2||i.length%2!==0)throw new Error("Which: expected even number of arguments (condition/value pairs)");let u=s.functions?.(t);if(u)return typeof u=="function"?u(i,c=>e.compile(c,s),s):`${u}(${i.map(c=>e.compile(c,s)).join(", ")})`;let l=c=>{if(c>=i.length)return"NaN";let f=i[c],p=i[c+1];return _(f,"True")?`(${e.compile(p,s)})`:`((${e.compile(f,s)}) ? (${e.compile(p,s)}) : ${l(c+2)})`};return l(0)}if(t==="When"){if(i.length!==2)throw new Error("When: expected exactly 2 arguments (expr, cond)");let u=s.functions?.(t);if(u)return typeof u=="function"?u(i,f=>e.compile(f,s),s):`${u}(${i.map(f=>e.compile(f,s)).join(", ")})`;if(_(i[1],"True"))return`(${e.compile(i[0],s)})`;if(_(i[1],"False"))return"NaN";let l=e.compile(i[0],s);return`((${e.compile(i[1],s)}) ? (${l}) : NaN)`}if(t==="Block")return e.compileBlock(i,s);let a=s.functions?.(t);if(!a)throw new Error(`Unknown operator \`${t}\``);if(typeof a=="function"){let u=n.lookupDefinition(t);if(vt(u)&&u.operator.broadcastable&&i.length===1&&ri(i[0])){let l=e.tempVar();return`(${e.compile(i[0],s)}).map((${l}) => ${a([i[0].engine.expr(l)],c=>e.compile(c,s),s)})`}return a(i,l=>e.compile(l,s),s)}return`${a}(${i.map(u=>e.compile(u,s)).join(", ")})`}static compileBlock(n,t){let i=[];for(let a of n)if(g(a,"Declare")){let u=a.ops[0];_(u)&&i.push(u.symbol)}if(n.length===1&&i.length===0)return e.compile(n[0],t);let r={};if(t.declare&&t.language){let u=t.language==="wgsl"?"vec2f":"vec2";for(let l of i)for(let c of n){if(g(c,"Declare")&&_(c.ops[0],l)&&_(c.ops[1],"complex")){r[l]=u;break}if(g(c,"Assign")&&_(c.ops[0],l)){e.isComplexValued(c.ops[1])&&(r[l]=u);break}}}let s={...t,var:a=>i.includes(a)?a:t.var(a)},o=n.filter(a=>!_(a,"Nothing")).map(a=>g(a,"Declare")&&_(a.ops[0])&&t.declare?t.declare(a.ops[0].symbol,r[a.ops[0].symbol]):e.compile(a,s)).filter(a=>a!=="");return o.length===0?"":t.block?t.block(o):(o[o.length-1]=`return ${o[o.length-1]}`,`(() => {${t.ws(`
|
|
9
|
+
`||(a==="+"?r++:a==="-"?s++:a==="i"||a==="I"?(r+s===0&&Gn(),i[o+1]!==" "&&!isNaN(Number(i[o+1]))?(t.im+=parseFloat((s%2?"-":"")+i[o+1]),o++):t.im+=parseFloat((s%2?"-":"")+"1"),r=s=0):((r+s===0||isNaN(Number(a)))&&Gn(),i[o+1]==="i"||i[o+1]==="I"?(t.im+=parseFloat((s%2?"-":"")+a),o++):t.re+=parseFloat((s%2?"-":"")+a),r=s=0))}r+s>0&&Gn();break;case"number":t.im=0,t.re=e;break;default:Gn()}return isNaN(t.re)||isNaN(t.im),t},R=class e{constructor(n,t){this.re=0,this.im=0;var i=wp(n,t);this.re=i.re,this.im=i.im}sign(){var n=this.abs();return new e(this.re/n,this.im/n)}add(n,t){var i=new e(n,t);return this.isInfinite()&&i.isInfinite()?e.NAN:this.isInfinite()||i.isInfinite()?e.INFINITY:new e(this.re+i.re,this.im+i.im)}sub(n,t){var i=new e(n,t);return this.isInfinite()&&i.isInfinite()?e.NAN:this.isInfinite()||i.isInfinite()?e.INFINITY:new e(this.re-i.re,this.im-i.im)}mul(n,t){var i=new e(n,t);return this.isInfinite()&&i.isZero()||this.isZero()&&i.isInfinite()?e.NAN:this.isInfinite()||i.isInfinite()?e.INFINITY:i.im===0&&this.im===0?new e(this.re*i.re,0):new e(this.re*i.re-this.im*i.im,this.re*i.im+this.im*i.re)}div(n,t){var i=new e(n,t);if(this.isZero()&&i.isZero()||this.isInfinite()&&i.isInfinite())return e.NAN;if(this.isInfinite()||i.isZero())return e.INFINITY;if(this.isZero()||i.isInfinite())return e.ZERO;n=this.re,t=this.im;var r=i.re,s=i.im,o,a;return s===0?new e(n/r,t/r):Math.abs(r)<Math.abs(s)?(a=r/s,o=r*a+s,new e((n*a+t)/o,(t*a-n)/o)):(a=s/r,o=s*a+r,new e((n+t*a)/o,(t-n*a)/o))}pow(n,t){var i=new e(n,t);if(n=this.re,t=this.im,i.isZero())return e.ONE;if(i.im===0){if(t===0&&n>0)return new e(Math.pow(n,i.re),0);if(n===0)switch((i.re%4+4)%4){case 0:return new e(Math.pow(t,i.re),0);case 1:return new e(0,Math.pow(t,i.re));case 2:return new e(-Math.pow(t,i.re),0);case 3:return new e(0,-Math.pow(t,i.re))}}if(n===0&&t===0&&i.re>0&&i.im>=0)return e.ZERO;var r=Math.atan2(t,n),s=Or(n,t);return n=Math.exp(i.re*s-i.im*r),t=i.im*s+i.re*r,new e(n*Math.cos(t),n*Math.sin(t))}sqrt(){var n=this.re,t=this.im,i=this.abs(),r,s;if(n>=0){if(t===0)return new e(Math.sqrt(n),0);r=.5*Math.sqrt(2*(i+n))}else r=Math.abs(t)/Math.sqrt(2*(i-n));return n<=0?s=.5*Math.sqrt(2*(i-n)):s=Math.abs(t)/Math.sqrt(2*(i+n)),new e(r,t<0?-s:s)}exp(){var n=Math.exp(this.re);return this.im,new e(n*Math.cos(this.im),n*Math.sin(this.im))}expm1(){var n=this.re,t=this.im;return new e(Math.expm1(n)*Math.cos(t)+kp(t),Math.exp(n)*Math.sin(t))}log(){var n=this.re,t=this.im;return t===0&&n>0,new e(Or(n,t),Math.atan2(t,n))}abs(){return Mp(this.re,this.im)}arg(){return Math.atan2(this.im,this.re)}sin(){var n=this.re,t=this.im;return new e(Math.sin(n)*pe(t),Math.cos(n)*we(t))}cos(){var n=this.re,t=this.im;return new e(Math.cos(n)*pe(t),-Math.sin(n)*we(t))}tan(){var n=2*this.re,t=2*this.im,i=Math.cos(n)+pe(t);return new e(Math.sin(n)/i,we(t)/i)}cot(){var n=2*this.re,t=2*this.im,i=Math.cos(n)-pe(t);return new e(-Math.sin(n)/i,we(t)/i)}sec(){var n=this.re,t=this.im,i=.5*pe(2*t)+.5*Math.cos(2*n);return new e(Math.cos(n)*pe(t)/i,Math.sin(n)*we(t)/i)}csc(){var n=this.re,t=this.im,i=.5*pe(2*t)-.5*Math.cos(2*n);return new e(Math.sin(n)*pe(t)/i,-Math.cos(n)*we(t)/i)}asin(){var n=this.re,t=this.im,i=new e(t*t-n*n+1,-2*n*t).sqrt(),r=new e(i.re-t,i.im+n).log();return new e(r.im,-r.re)}acos(){var n=this.re,t=this.im,i=new e(t*t-n*n+1,-2*n*t).sqrt(),r=new e(i.re-t,i.im+n).log();return new e(Math.PI/2-r.im,r.re)}atan(){var n=this.re,t=this.im;if(n===0){if(t===1)return new e(0,1/0);if(t===-1)return new e(0,-1/0)}var i=n*n+(1-t)*(1-t),r=new e((1-t*t-n*n)/i,-2*n/i).log();return new e(-.5*r.im,.5*r.re)}acot(){var n=this.re,t=this.im;if(t===0)return new e(Math.atan2(1,n),0);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).atan():new e(n!==0?n/0:0,t!==0?-t/0:0).atan()}asec(){var n=this.re,t=this.im;if(n===0&&t===0)return new e(0,1/0);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).acos():new e(n!==0?n/0:0,t!==0?-t/0:0).acos()}acsc(){var n=this.re,t=this.im;if(n===0&&t===0)return new e(Math.PI/2,1/0);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).asin():new e(n!==0?n/0:0,t!==0?-t/0:0).asin()}sinh(){var n=this.re,t=this.im;return new e(we(n)*Math.cos(t),pe(n)*Math.sin(t))}cosh(){var n=this.re,t=this.im;return new e(pe(n)*Math.cos(t),we(n)*Math.sin(t))}tanh(){var n=2*this.re,t=2*this.im,i=pe(n)+Math.cos(t);return new e(we(n)/i,Math.sin(t)/i)}coth(){var n=2*this.re,t=2*this.im,i=pe(n)-Math.cos(t);return new e(we(n)/i,-Math.sin(t)/i)}csch(){var n=this.re,t=this.im,i=Math.cos(2*t)-pe(2*n);return new e(-2*we(n)*Math.cos(t)/i,2*pe(n)*Math.sin(t)/i)}sech(){var n=this.re,t=this.im,i=Math.cos(2*t)+pe(2*n);return new e(2*pe(n)*Math.cos(t)/i,-2*we(n)*Math.sin(t)/i)}asinh(){var n=this.im;this.im=-this.re,this.re=n;var t=this.asin();return this.re=-this.im,this.im=n,n=t.re,t.re=-t.im,t.im=n,t}acosh(){var n=this.acos();if(n.im<=0){var t=n.re;n.re=-n.im,n.im=t}else{var t=n.im;n.im=-n.re,n.re=t}return n}atanh(){var n=this.re,t=this.im,i=n>1&&t===0,r=1-n,s=1+n,o=r*r+t*t,a=o!==0?new e((s*r-t*t)/o,(t*r+s*t)/o):new e(n!==-1?n/0:0,t!==0?t/0:0),u=a.re;return a.re=Or(a.re,a.im)/2,a.im=Math.atan2(a.im,u)/2,i&&(a.im=-a.im),a}acoth(){var n=this.re,t=this.im;if(n===0&&t===0)return new e(0,Math.PI/2);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).atanh():new e(n!==0?n/0:0,t!==0?-t/0:0).atanh()}acsch(){var n=this.re,t=this.im;if(t===0)return new e(n!==0?Math.log(n+Math.sqrt(n*n+1)):1/0,0);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).asinh():new e(n!==0?n/0:0,t!==0?-t/0:0).asinh()}asech(){var n=this.re,t=this.im;if(this.isZero())return e.INFINITY;var i=n*n+t*t;return i!==0?new e(n/i,-t/i).acosh():new e(n!==0?n/0:0,t!==0?-t/0:0).acosh()}inverse(){if(this.isZero())return e.INFINITY;if(this.isInfinite())return e.ZERO;var n=this.re,t=this.im,i=n*n+t*t;return new e(n/i,-t/i)}conjugate(){return new e(this.re,-this.im)}neg(){return new e(-this.re,-this.im)}ceil(n){return n=Math.pow(10,n||0),new e(Math.ceil(this.re*n)/n,Math.ceil(this.im*n)/n)}floor(n){return n=Math.pow(10,n||0),new e(Math.floor(this.re*n)/n,Math.floor(this.im*n)/n)}round(n){return n=Math.pow(10,n||0),new e(Math.round(this.re*n)/n,Math.round(this.im*n)/n)}equals(n,t){var i=new e(n,t);return Math.abs(i.re-this.re)<=e.EPSILON&&Math.abs(i.im-this.im)<=e.EPSILON}clone(){return new e(this.re,this.im)}toString(){var n=this.re,t=this.im,i="";return this.isNaN()?"NaN":this.isInfinite()?"Infinity":(Math.abs(n)<e.EPSILON&&(n=0),Math.abs(t)<e.EPSILON&&(t=0),t===0?i+n:(n!==0?(i+=n,i+=" ",t<0?(t=-t,i+="-"):i+="+",i+=" "):t<0&&(t=-t,i+="-"),t!==1&&(i+=t),i+"i"))}toVector(){return[this.re,this.im]}valueOf(){return this.im===0?this.re:null}isNaN(){return isNaN(this.re)||isNaN(this.im)}isZero(){return this.im===0&&this.re===0}isFinite(){return isFinite(this.re)&&isFinite(this.im)}isInfinite(){return!(this.isNaN()||this.isFinite())}};R.ZERO=new R(0,0);R.ONE=new R(1,0);R.I=new R(0,1);R.PI=new R(Math.PI,0);R.E=new R(Math.E,0);R.INFINITY=new R(1/0,1/0);R.NAN=new R(NaN,NaN);R.EPSILON=1e-15;function Pe(e){if(e==null)return null;if(typeof e=="number")return Number.isInteger(e)&&e>=-Re&&e<=Re?e:null;if(!P(e))return null;let n=e.numericValue;if(typeof n=="number")return Number.isInteger(n)&&n>=-Re&&n<=Re?n:null;if(n.im!==0)return null;let t=n.re;return Number.isInteger(t)&&t>=-Re&&t<=Re?Number(t):null}function W(e){if(!P(e))return null;let n=e.numericValue,t=typeof n=="number"?n:n.re;if(!Number.isFinite(t))return null;let i=Math.round(t);return Number.isSafeInteger(i)?i:null}function Bp(e,n,t,i){return e.filter(r=>{let o=t.subs({[n]:r}).evaluate();return ie(o)==="True"})}function Br(e,n){if(e.operator!=="Element")return{status:"error",reason:"expected-element-expression"};if(!g(e))return{status:"error",reason:"expected-element-expression"};let t=_(e.op1)?e.op1.symbol:void 0;if(!t)return{status:"error",reason:"expected-index-variable"};let i=e.op2;if(!i)return{status:"error",reason:"expected-domain"};let r=e.op3,s=e.nops>=3&&r&&ie(r)!=="Nothing"?r:null,o=u=>{if(s){let l=Bp(u,t,s,n);return{status:"success",variable:t,values:l}}return{status:"success",variable:t,values:u}};if(i.operator==="Set"||i.operator==="List"){let u=g(i)?i.ops:void 0;if(u&&u.length<=1e3){if(i.operator==="List"&&u.length===2){let l=Pe(u[0]),c=Pe(u[1]);if(l!==null&&c!==null){let f=c-l+1;if(f>0&&f<=1e3){let p=[];for(let d=l;d<=c;d++)p.push(n.number(d));return o(p)}if(f>1e3)return{status:"non-enumerable",variable:t,domain:i,reason:"domain-too-large"}}}return o([...u])}return u&&u.length>1e3?{status:"non-enumerable",variable:t,domain:i,reason:"domain-too-large"}:{status:"error",reason:"empty-domain"}}if(g(i,"Range")){let u=Pe(i.op1),l=Pe(i.op2),c=i.ops.length>=3?Pe(i.op3):1;if(u!==null&&l!==null&&c!==null&&c!==0){let f=Math.floor((l-u)/c)+1;if(f>0&&f<=1e3){let p=[];for(let d=u;c>0?d<=l:d>=l;d+=c)p.push(n.number(d));return o(p)}if(f>1e3)return{status:"non-enumerable",variable:t,domain:i,reason:"domain-too-large"}}return{status:"non-enumerable",variable:t,domain:i,reason:"non-integer-bounds"}}if(g(i,"Interval")){let u=i.op1,l=i.op2,c=!1,f=!1;g(u,"Open")?(c=!0,u=u.op1):g(u,"Closed")&&(u=u.op1),g(l,"Open")?(f=!0,l=l.op1):g(l,"Closed")&&(l=l.op1);let p=Pe(u),d=Pe(l);if(p!==null&&d!==null){c&&(p+=1),f&&(d-=1);let b=d-p+1;if(b>0&&b<=1e3){let y=[];for(let E=p;E<=d;E++)y.push(n.number(E));return o(y)}if(b>1e3)return{status:"non-enumerable",variable:t,domain:i,reason:"domain-too-large"}}return{status:"non-enumerable",variable:t,domain:i,reason:"non-integer-bounds"}}let a=ie(i);if(a){if(["Integers","NonNegativeIntegers","PositiveIntegers","NegativeIntegers","Rationals","Reals","PositiveReals","NonNegativeReals","NegativeReals","NonPositiveReals","ExtendedReals","Complexes","ImaginaryNumbers","Numbers","ExtendedComplexes","AlgebraicNumbers","TranscendentalNumbers"].includes(a))return{status:"non-enumerable",variable:t,domain:i,reason:"infinite-domain"};let l=i.value;if(l&&l.operator==="Set"&&g(l)){let c=l.ops;if(c&&c.length<=1e3)return o([...c]);if(c&&c.length>1e3)return{status:"non-enumerable",variable:t,domain:i,reason:"domain-too-large"}}return{status:"non-enumerable",variable:t,domain:i,reason:"unknown-domain"}}return{status:"non-enumerable",variable:t,domain:i,reason:"unrecognized-domain-type"}}function qu(e){return e?._kind==="number"}function Vp(e){return e?._kind==="symbol"}function Et(e,n){return(e?._kind==="function"||e?._kind==="tensor")&&(n===void 0||e.operator===n)}function un(e){if(Et(e,"Interval")){let n=e.op1,t=e.op2,i=!1,r=!1;Et(n,"Open")?(i=!0,n=n.op1):Et(n,"Closed")&&(n=n.op1),Et(t,"Open")?(r=!0,t=t.op1):Et(t,"Closed")&&(t=t.op1);let s=n.N(),o=t.N();return!qu(s)||!qu(o)?void 0:{start:s.re,openStart:i,end:o.re,openEnd:r}}if(Vp(e)){if(e.symbol==="EmptySet")return{start:0,openStart:!0,end:0,openEnd:!0};if(e.symbol==="RealNumbers")return{start:-1/0,openStart:!1,end:1/0,openEnd:!1};if(e.symbol==="NegativeNumbers")return{start:-1/0,openStart:!1,end:0,openEnd:!0};if(e.symbol==="NonPositiveNumbers")return{start:-1/0,openStart:!1,end:0,openEnd:!1};if(e.symbol==="PositiveNumbers")return{start:0,openStart:!0,end:1/0,openEnd:!1};if(e.symbol==="NonNegativeNumbers")return{start:0,openStart:!1,end:1/0,openEnd:!1}}}function Ju(e,n){return!((e.openStart?n<=e.start:n<e.start)||(e.openEnd?n>=e.end:n>e.end))}function zu(e){let n=Math.sin(e*12.9898)*43758.5453;return n-Math.floor(n)}function Gu(e){return e+.6180339887498949}function ju(e,n,t){return n.every(i=>i.isCanonical)?n:n.map(i=>e.expr(i,{scope:t}))}function Ie(e){if(typeof e=="string")return pa(e)?e:"error";switch(e.kind){case"union":return Zu(e);case"intersection":return Jp(e);case"negation":return qp(e);case"collection":case"indexed_collection":return zp(e.kind,e);case"list":return Gp(e);case"set":return jp(e);case"tuple":return Hp(e);case"record":return Up(e);case"dictionary":return Zp(e);case"signature":return Yp(e);case"value":return e;case"reference":return e;default:throw new Error(`Unknown type kind: ${e}`)}}function he(e){return typeof e!="object"||Object.isFrozen(e)||Object.prototype.hasOwnProperty.call(e,"toString")||Object.defineProperty(e,"toString",{value:()=>G(e)}),e}function Uu(e){let n=[],t=new Set;for(let i of e){let r=Ie(i),s=typeof r=="string"?r:G(r);t.has(s)||(t.add(s),n.push(r))}return n}function qp(e){let n=Ie(e.type);return n==="nothing"?"any":n==="any"?"nothing":he({kind:"negation",type:n})}function Zu(e){let n=Uu(e.types);if(n.length===0)return"never";if(n.some(i=>i==="error"))return"error";if(n.length===1)return he(n[0]);let t=[];for(let i of n)if(!t.some(r=>A(i,r))){for(let r=t.length-1;r>=0;r--)A(t[r],i)&&t.splice(r,1);t.push(i)}return t.length===1?he(t[0]):he({kind:"union",types:t})}function Yu(e,n){if(A(e,n))return e;if(A(n,e))return n;if(typeof e=="object"&&e.kind==="union")return Hu(e.types,n);if(typeof n=="object"&&n.kind==="union")return Hu(n.types,e);if(typeof e=="string"&&typeof n=="string"){let t=va(e,n);return t.length===0?"nothing":t.length===1?t[0]:{kind:"union",types:t}}return"nothing"}function Hu(e,n){let t=e.map(i=>Yu(i,n)).filter(i=>i!=="nothing");return t.length===0?"nothing":t.length===1?t[0]:Zu({kind:"union",types:t})}function Jp(e){let n=Uu(e.types);if(n.length===0)return"nothing";if(n.some(i=>i==="error"))return"error";let t=n[0];for(let i=1;i<n.length;i++)if(t=Yu(t,n[i]),t==="nothing")return"nothing";return he(t)}function zp(e,n){let t=Ie(n.elements);return t==="error"?"error":t==="nothing"?he({kind:e,elements:"nothing"}):t==="any"?e:he({...n,elements:t})}function Gp(e){let n=Ie(e.elements);if(n==="error")return"error";if(n==="nothing")return he({kind:"list",elements:"nothing"});if(n==="any")return"list";let t=e.dimensions;return t&&(t=t.filter(i=>i>=1||i===-1),t.length===0)?"nothing":he({...e,dimensions:t,elements:n})}function jp(e){let n=Ie(e.elements);return n==="error"?"error":n==="nothing"?he({kind:"set",elements:"nothing"}):n==="any"?"set":he({...e,elements:n})}function Hp(e){let n=e.elements.map(t=>({...t,type:Ie(t.type)}));return n.length===0?"nothing":n.some(t=>t.type==="error")?"error":(n=n.filter(t=>t.type!=="nothing"),he({...e,elements:n}))}function Up(e){let n={};for(let[t,i]of Object.entries(e.elements))n[t]=Ie(i);return Object.values(n).some(t=>t==="error")?"error":(n=Object.fromEntries(Object.entries(n).filter(([t,i])=>i!=="nothing")),Object.keys(n).length===0?"record":he({...e,elements:n}))}function Zp(e){let n=Ie(e.values);return n==="error"||n==="nothing"?"error":n==="any"||n==="unknown"?"any":he({kind:"dictionary",values:n})}function Yp(e){let n=e.args?.map(s=>({...s,type:Ie(s.type)})),t=e.optArgs?.map(s=>({...s,type:Ie(s.type)})),i=e.variadicArg?{...e.variadicArg,type:Ie(e.variadicArg.type)}:void 0,r=Ie(e.result);return n?.some(s=>s.type==="error")||t?.some(s=>s.type==="error")||i?.type==="error"||r==="error"?"error":(t=t?.filter(s=>s.type!=="nothing"),n?.length===0&&(t=void 0),t?.length===0&&(t=void 0),i?.type==="nothing"&&(i=void 0),he({...e,args:n,optArgs:t,variadicArg:i,variadicMin:i?e.variadicMin:void 0,result:r}))}function Wp(e,n){return Ie({kind:"intersection",types:[e,n]})}function Ti(e,n){let t=e.type;if(t.matches(n))return!0;if(Wp(t.type,n)==="nothing"||P(e))return!1}var Nt=50,Tt=si(),gv={List:{complexity:8200,signature:"(any*) -> list",type:(e,{engine:n})=>K(`list<${de.widen(...e.map(t=>t.type))}>`),canonical:Xp,lazy:!0,evaluate:(e,{engine:n,materialization:t})=>{if(t)return n._fn("List",qr(e).map(i=>i.evaluate({materialization:t})))},eq:Xu,collection:si()},Set:{complexity:8200,signature:"(any*) -> set",type:(e,{engine:n})=>Ve(e)!==null?K("set"):K(`set<${de.widen(...e.map(t=>t.type))}>`),canonical:Qp,lazy:!0,evaluate:(e,{engine:n,numericApproximation:t,materialization:i})=>{let r=Ve(e);if(r!==null){let s=An(r);return s===void 0||s.length>gr?void 0:n.function("Set",s)}return n.function("Set",e.map(s=>s.evaluate({numericApproximation:t,materialization:i})))},eq:(e,n)=>{if(e.operator!==n.operator||!g(e)||!g(n)||e.nops!==n.nops)return!1;let t=i=>n.ops.some(r=>i.isSame(r));return e.ops.every(t)},collection:{...Tt,at:void 0,indexWhere:void 0,isLazy:e=>g(e)&&Ve(e.ops)!==null,count:e=>{if(!g(e))return 0;let n=Ve(e.ops);return n===null?e.nops:An(n)?.length},isEmpty:e=>{if(!g(e))return!0;let n=Ve(e.ops);if(n===null)return e.nops===0;let t=An(n);return t===void 0?void 0:t.length===0},isFinite:e=>{if(!g(e))return!0;let n=Ve(e.ops);if(n===null||An(n)!==void 0||n.domain?.isFiniteCollection===!0)return!0},iterator:e=>{if(!g(e))return Tt.iterator(e);let n=Ve(e.ops);if(n===null)return Tt.iterator(e);let t=An(n);if(t===void 0)return;let i=0;return{next:()=>i>=t.length?{value:void 0,done:!0}:{value:t[i++],done:!1}}},contains:(e,n)=>{if(!g(e))return;let t=Ve(e.ops);return t!==null?Kp(t,n):el(e.ops,n)},elttype:e=>{if(!g(e))return Tt.elttype(e);let n=Ve(e.ops);if(n===null)return Tt.elttype(e);let t=An(n);return t===void 0||t.length===0?"unknown":Ee(...t.map(i=>i.type.type))}}},Length:{description:"Number of elements in a collection. Returns undefined for non-collections and for infinite collections.",complexity:4e3,signature:"(any) -> integer",type:()=>"integer",evaluate:([e],{engine:n})=>{if(!e.isCollection)return;if(e.isEmptyCollection)return n.Zero;let t=e.count;if(!(t===void 0||!isFinite(t)))return n.number(t)}},Tuple:{description:"A fixed number of heterogeneous elements",complexity:8200,signature:"(any*) -> tuple",type:e=>K(`tuple<${e.map(n=>n.type).join(", ")}>`),canonical:(e,{engine:n})=>n.tuple(...e),eq:Xu,collection:{...si(),keys:e=>["first","second","last"]}},KeyValuePair:{description:"A key/value pair",complexity:8200,signature:"(key: string, value: any) -> tuple<string, unknown>",type:([e,n])=>K(`tuple<string, ${n.type}>`),canonical:(e,{engine:n})=>{let[t,i]=Fr(n,e,["string","any"]);return!t.isValid||!i.isValid?n._fn("KeyValuePair",[t,i]):n.tuple(t,i)}},Single:{description:"A tuple with a single element",complexity:8200,signature:"(value: any) -> tuple<any>",type:([e])=>K(`tuple<${e.type}>`),canonical:(e,{engine:n})=>n.tuple(...vi(n,e,1))},Pair:{description:"A tuple of two elements",complexity:8200,signature:"(first: any, second: any) -> tuple<any, any>",type:([e,n])=>K(`tuple<${e.type}, ${n.type}>`),canonical:(e,{engine:n})=>n.tuple(...vi(n,e,2))},Triple:{description:"A tuple of three elements",complexity:8200,signature:"(first: any, second: any, third: any) -> tuple<any, any, any>",type:([e,n,t])=>K(`tuple<${e.type}, ${n.type}, ${t.type}>`),canonical:(e,{engine:n})=>n.tuple(...vi(n,e,3))},Range:{complexity:8200,signature:"(number, number?, step: number?) -> indexed_collection<number>",type:e=>e.every(t=>t.isInteger)?K("indexed_collection<integer>"):K("indexed_collection<number>"),canonical:(e,{engine:n})=>e.length===0?null:e.length===1?n._fn("Range",[n.One,e[0].canonical]):e.length===2?n._fn("Range",[e[0].canonical,e[1].canonical]):n._fn("Range",[e[0].canonical,e[1].canonical,e[2].canonical.evaluate()]),eq:(e,n)=>{if(e.operator!==n.operator)return!1;let[t,i,r]=rn(e),[s,o,a]=rn(n);return t===s&&i===o&&r===a},collection:{isLazy:e=>!0,count:e=>{let[n,t,i]=rn(e);return i===0?0:!isFinite(n)||!isFinite(t)?1/0:Math.max(0,Math.floor((t-n)/i)+1)},contains:(e,n)=>{let t=n.re;if(Number.isNaN(t))return Ti(n,"number")===!1?!1:void 0;if(n.im!==0||!isFinite(t))return!1;if(g(e)&&e.ops.some(l=>Number.isNaN(l.re)))return;let[i,r,s]=rn(e);if(s===0)return!1;if(s>0){if(t<i||t>r)return!1}else if(t>i||t<r)return!1;let o=(t-i)/s,a=e.engine.tolerance,u=Math.round(o);return u>=0&&Math.abs(o-u)<a},iterator:e=>{let[n,t,i]=rn(e),r=i===0?0:Math.max(0,Math.floor((t-n)/i)+1),s=1;return{next:()=>s===r+1?{value:void 0,done:!0}:(s+=1,{value:e.engine.number(n+i*(s-1-1)),done:!1})}},at:(e,n)=>{if(typeof n!="number")return;let[t,i,r]=rn(e);if(r===0)return;let s=Math.max(0,Math.floor((i-t)/r)+1);if(!(n<1||n>s))return e.engine.number(t+r*(n-1))},indexWhere:void 0,subsetOf:(e,n)=>{if(n.operator==="Range"){let[i,r,s]=rn(e),[o,a,u]=rn(n);return i>=o&&r<=a&&s%u===0}if(!n.isCollection)return!1;let t=1;for(let i of n.each()){if(!e.contains(i)||!e.at(t)?.isSame(i))return!1;t++}return!0},eltsgn:e=>{let[n,t,i]=rn(e);return i===0?"zero":i>0?n<=t?"positive":"negative":n>=t?"positive":"negative"},elttype:e=>{if(!g(e))return"finite_integer";for(let n=1;n<=e.nops;n++)if(!e[`op${n}`].isInteger)return"finite_real";return"finite_integer"}}},Interval:{description:"A set of real numbers between two endpoints. The endpoints may or may not be included.",complexity:8200,lazy:!0,signature:"(number, number) -> set<real>",canonical:([e,n],{engine:t})=>{if(!e||!n)return null;let i=c=>g(c,"Open")?[c.op1,!0]:g(c,"Closed")?[c.op1,!1]:[c,!1],[r,s]=i(e),[o,a]=i(n),[u,l]=Fr(t,[r.canonical,o.canonical],["number","number"]);return!u.isValid||!l.isValid?null:t._fn("Interval",[s?t._fn("Open",[u]):u,a?t._fn("Open",[l]):l])},eq:(e,n)=>{let t=un(e),i=un(n);return!t||!i?!1:t.start===i.start&&t.end===i.end&&t.openStart===i.openStart&&t.openEnd===i.openEnd},collection:{count:e=>1/0,iterator:e=>{let n=un(e);if(!n)return{next:()=>({value:void 0,done:!0})};if(n.start>=n.end)return{next:()=>({value:void 0,done:!0})};let t=e.engine,i=0,r=0;return{next:()=>{let s=Math.pow(2,i);r>=s&&(i++,r=0);let o=(2*r+1)/Math.pow(2,i+1),a=n.start+o*(n.end-n.start);return r++,{value:t.number(a),done:!1}}}},isEmpty:e=>{let n=un(e);if(n)return n.openStart&&n.start===n.end||n.openEnd&&n.start===n.end?!0:n.openStart&&n.openEnd?!1:n.start>=n.end},isFinite:e=>!1,contains:(e,n)=>{let t=un(e);if(!t)return;if(Ti(n,"number")===!1)return!1;let i=n.re;if(!Number.isNaN(i))return n.im!==0?!1:Ju(t,i);let r=t.openStart?n.isGreater(t.start):n.isGreaterEqual(t.start);if(r===!1)return!1;let s=t.openEnd?n.isLess(t.end):n.isLessEqual(t.end);if(s===!1)return!1;if(r===!0&&s===!0)return!0},eltsgn:e=>{let n=un(e);if(!n||n.start===n.end)return"unsigned";if(n.start>=0&&!n.openStart)return"non-negative";if(n.end<=0&&!n.openEnd)return"non-positive";if(n.start>0&&n.end>0)return"positive";if(n.start<0&&n.end<0)return"negative"},elttype:e=>{let n=un(e);return n?isFinite(n.start)&&isFinite(n.end)?"finite_real":"real":"never"}}},Linspace:{complexity:8200,signature:"(start: number, end: number?, count: number?) -> indexed_collection",collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let n=e.op3.re;return isFinite(n)||(n=Nt),Math.max(0,Math.floor(n))},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let t=e.op1.re,i=e.op2.re,r=e.op3.re;if(isFinite(r)||(r=Nt),r=Math.floor(r),!(!isFinite(t)||!isFinite(i))&&!(n<1||n>r))return r===1?e.engine.number(t):e.engine.number(t+(i-t)*(n-1)/(r-1))},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.op1.re,t=e.op2.re,i;isFinite(t)?i=Math.max(0,isFinite(e.op3.re)?e.op3.re:Nt):(t=n,n=1,i=Nt),i=Math.floor(i);let r=i>1?i-1:1,s=1;return{next:()=>s===i+1?{value:void 0,done:!0}:(s+=1,{value:e.engine.number(n+(t-n)*(s-1-1)/r),done:!1})}},contains:(e,n)=>{let t=n.re;if(Number.isNaN(t))return Ti(n,"number")===!1?!1:void 0;if(n.im!==0||!isFinite(t))return!1;if(!g(e))return;let i=e.op1.re,r=e.op2.re;if(Number.isNaN(i)||Number.isNaN(r))return;if(t<i||t>r)return!1;let s=e.op3.re;if(isFinite(s)||(s=Nt),s=Math.floor(s),s===0)return!1;if(s===1)return t===i;let o=(r-i)/(s-1),a=(t-i)/o,u=e.engine.tolerance,l=Math.round(a);return l>=0&&l<=s-1&&Math.abs(a-l)<u}}},Contains:{description:"Return True if the collection contains the given element, False otherwise.",complexity:8200,signature:"(collection, element: any) -> boolean",evaluate:([e,n],{engine:t})=>e.contains(n)?t.True:t.False},Count:{description:["Return the number of elements in the collection."],complexity:8200,signature:"(collection) -> integer",evaluate:([e],{engine:n})=>{if(e.isEmptyCollection)return n.Zero;let t=e.count;if(t!==void 0)return n.number(t)},sgn:([e])=>{let n=e.isEmptyCollection;if(n===!0)return"zero";if(n===!1)return"positive"}},IsEmpty:{description:["Return True if the collection is empty, False otherwise."],complexity:8200,signature:"(collection) -> boolean",evaluate:([e],{engine:n})=>e.isEmptyCollection?n.True:n.False},Map:{description:["Return the collection where each element has been transformed by the mapping function.","Equivalent to `[f(x) for x in xs]`."],complexity:8200,lazy:!0,signature:"(collection, function) -> collection",type:e=>e[0].type,canonical:(e,{engine:n})=>{let t=an(n,e[0]?.canonical,"collection"),i=Ye(e[1]);return!t.isValid||!i?null:n._fn("Map",[t,i])},collection:{isLazy:e=>!0,count:e=>{if(g(e))return e.op1.count},isEmpty:e=>{if(g(e))return e.op1.isEmptyCollection},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=se(e.op2);if(!n)return{next:()=>({value:void 0,done:!0})};let t=e.op1.each();return{next:()=>{for(;;){let{value:i,done:r}=t.next();return r?{value:void 0,done:!0}:{value:n([i])??e.engine.Nothing,done:!1}}}}},at:(e,n)=>{if(!g(e)||!e.isIndexedCollection||typeof n!="number"||!Number.isFinite(n)||n===0)return;let t=e.op1.at(n);if(t)return se(e.op2)?.([t])}}},Filter:{description:["Return the elements of the collection for which the predicate function returns True.","Equivalent to `[x for x in xs if p(x)]`."],complexity:8200,lazy:!0,signature:"(collection, predicate: function) -> collection",type:e=>e[0].type,canonical:(e,{engine:n})=>{let t=an(n,e[0]?.canonical,"collection"),i=Ye(e[1]);return!t.isValid||!i?null:n._fn("Filter",[t,i])},collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;if(!e.op1.isFiniteCollection)return 1/0;let n=0;for(let t of e.each())n++;return n},contains:(e,n)=>{if(!g(e)||!e.contains(n))return!1;let t=se(e.op2);return ie(t([n]))==="True"},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=se(e.op2);if(!n)return{next:()=>({value:void 0,done:!0})};let t=e.op1.each(),i=0,r=e.engine.iterationLimit;return{next:()=>{for(;;){let{value:s,done:o}=t.next();if(i+=1,i>r)throw new je({cause:"iteration-limit-exceeded",message:`Iteration limit of ${r} exceeded while evaluating Filter()`});if(o)return{value:void 0,done:!0};let a=n([s]);if(!a)throw new Error(`Invalid filter predicate. ${tn(e.op2)}`);if(ie(a)==="True")return{value:s,done:!1};if(ie(a)!=="False")throw new Error(`Filter predicate must return "True" or "False". ${tn(e.op2)}`)}}}},at:(e,n)=>{if(typeof n!="number"||!Number.isFinite(n)||n===0||!g(e))return;let t=se(e.op2);if(!t)return;if(n<0){if(!e.op1.isFiniteCollection)return;let r=Array.from(e.each()),s=r.length+n+1;return s<1||s>r.length?void 0:r[s-1]}let i=0;for(let r of e.op1.each()){let s=ie(t([r]));if(s==="True"){if(i+=1,i===n)return r}else if(s!=="False")throw new Error(`Filter predicate must return "True" or "False". ${tn(e.op2)}`)}}}},Reduce:{complexity:8200,lazy:!0,signature:"(collection, function, initial:value?) -> value",canonical:(e,{engine:n})=>{let t=an(n,e[0],"collection"),i=Ye(e[1]);if(!t.isValid||!i)return null;let r=e[2]?.canonical;return r?.isValid?n._fn("Reduce",[t,i,r]):n._fn("Reduce",[t,i])},type:e=>K(hr(e[1].type.type)??"unknown"),evaluate:([e,n,t],{engine:i})=>{if(!e.isFiniteCollection)return;let r=t!==void 0;if(t??=i.Nothing,t.type.matches("real")&&e.type.matches(i.type("collection<real>"))){let o=i._compile(n);if(o.calling==="lambda"&&o.run)return Ki((function*(){let a=r?t.re:NaN,u=!0;for(let l of e.each())u&&!r?a=l.re:a=o.run(a,l.re),u=!1,yield;return i.expr(a)})(),i._timeRemaining)}let s=se(n);return Ki(nl(e,(o,a)=>s([o,a])??i.Nothing,t),i._timeRemaining)}},Join:{description:["Join the elements of some collections into a flat collection."],complexity:8200,signature:"(collection*) -> collection",type:em,collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let n=0;for(let t of e.ops){let i=t.count;if(i===void 0)return;if(!Number.isFinite(i))return 1/0;n+=i}return n},contains:(e,n)=>g(e)?e.ops.some(t=>t.contains(n)):!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.ops.map(i=>i.each()),t=0;return{next:()=>{for(;;){let{value:i,done:r}=n[t].next();if(!r)return{value:i,done:!1};if(t+=1,t>=n.length)return{value:void 0,done:!0}}}}},at:(e,n)=>{if(!(typeof n!="number"||!g(e))){if(n<0){let t=0;for(let i of e.ops){let r=i.count;if(r===void 0||!Number.isFinite(r))return;t+=r}n=t+n+1}if(!(n<1))for(let t of e.ops){let i=t.count;if(i===void 0)return;if(n<=i)return t.at(n);n-=i}}}}},At:{description:["Access an element of an indexed collection.","If the index is negative, it is counted from the end.","Multiple indices can be provided to access nested collections (e.g., matrices).","If the index is a finite collection of booleans, returns the elements where the mask is True.","If the index is a finite collection of integers, returns the elements at those indices."],complexity:8200,signature:"(value: indexed_collection | dictionary, index: (number|string|indexed_collection)+) -> unknown",type:([e])=>e.operatorDefinition?.collection?.elttype?.(e)??Fe(e.type.type)??"any",evaluate:(e,{engine:n})=>{let t=e[0],i=1;for(;e[i];){let r=e[i];if(Ca(t)){if(!ue(r))return;t=t.get(r.string)??n.Nothing,i+=1;continue}let o=t.baseDefinition?.collection?.at;if(!o)return;let a=ue(r)?r.string:void 0;if(a!==void 0){t=o(t,a)??n.Nothing,i+=1;continue}if(r.isCollection&&r.isFiniteCollection){let l=Array.from(r.each()),c=l.every(p=>{let d=ie(p);return d==="True"||d==="False"}),f=[];if(c)l.forEach((p,d)=>{if(ie(p)!=="True")return;let b=o(t,d+1);b!==void 0&&f.push(b)});else for(let p of l){let d=p.re;if(!Number.isInteger(d))return;let b=o(t,d);b!==void 0&&f.push(b)}t=n._fn("List",f),i+=1;continue}let u=r.re;if(!Number.isInteger(u))return;t=o(t,u)??n.Nothing,i+=1}return t}},Take:{description:["Return `n` elements from a collection."],complexity:8200,signature:"(xs: indexed_collection, count: number) -> indexed_collection",type:([e])=>`list<${G(Fe(e.type.type)??"any")}>`,evaluate:(e,{engine:n,materialization:t})=>{if(!t)return;let i=n._fn("Take",e),r=Array.from(i.each());return n._fn("List",r)},collection:{isLazy:e=>!0,count:Ku,isEmpty:e=>{if(!g(e))return;let[n,t]=e.ops;if(n.isEmptyCollection)return!0;if(n.isFiniteCollection===!1)return!1;let i=Math.max(0,W(t)??0),r=n.count;if(r!==void 0)return Number.isFinite(i)?Math.min(r,i)===0:!1},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},iterator:nm,at:(e,n)=>{if(typeof n!="number"||n===0||!g(e))return;let t=Math.max(0,W(e.op2)??0);if(t===0)return;if(n>0)return n>t?void 0:e.op1.at(n);let i=Ku(e);if(!(i===void 0||i===0)&&!(n<-i))return e.op1.at(i+n)}}},Drop:{description:["Return the collection without the first n elements."],complexity:8200,signature:"(xs: indexed_collection, count: number) -> indexed_collection",type:([e])=>`list<${G(Fe(e.type.type)??"any")}>`,collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let[n,t]=e.ops,i=n.count;if(i===void 0)return;if(!Number.isFinite(i))return 1/0;if(n.isEmptyCollection)return 0;let r=W(t)??0;return r>=i?0:Math.max(0,i-r)},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let[n,t]=e.ops,i=W(t)??0;if(i<=0)return n.each();let r=n.count,s=i+1;return{next:()=>{if(r!==void 0&&s>r)return{value:void 0,done:!0};let o=n.at(s++);return o===void 0?{value:void 0,done:!0}:{value:o,done:!1}}}},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let[t,i]=e.ops,r=W(i)??0;if(r<=0)return t.at(n);if(n<0){let s=t.count;return s!==void 0&&-n>s-r?void 0:t.at(n)}if(!(n<1))return t.at(n+r)}}},First:{complexity:8200,signature:"(any) -> any",type:([e])=>e.operatorDefinition?.collection?.elttype?.(e)??"any",evaluate:([e],{engine:n})=>e.isCollection?e.at(1)??n.Nothing:n.error(["incompatible-type","'collection'",e.type.toString()])},Second:{complexity:8200,signature:"(any) -> any",type:([e])=>e.operatorDefinition?.collection?.elttype?.(e)??"any",evaluate:([e],{engine:n})=>e.isCollection?e.at(2)??n.Nothing:n.error(["incompatible-type","'collection'",e.type.toString()])},Third:{complexity:8200,signature:"(any) -> any",type:([e])=>e.operatorDefinition?.collection?.elttype?.(e)??"any",evaluate:([e],{engine:n})=>e.isCollection?e.at(3)??n.Nothing:n.error(["incompatible-type","'collection'",e.type.toString()])},Last:{complexity:8200,signature:"(collection) -> any",type:([e])=>e.operatorDefinition?.collection?.elttype?.(e)??"any",evaluate:([e],{engine:n})=>e.at(-1)??n.Nothing},Rest:{description:["Return the collection without the first element.","If the collection has only one element, return an empty collection."],complexity:8200,signature:"(indexed_collection) -> indexed_collection",collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let n=e.op1.count;if(n!==void 0)return Math.max(0,n-1)},isEmpty:e=>{if(!g(e))return;if(e.op1.isEmptyCollection)return!0;let n=e.op1.count;if(n!==void 0)return n<=1},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.op1,t=n.count,i=2;return{next:()=>{if(t!==void 0&&i>t)return{value:void 0,done:!0};let r=n.at(i);return r===void 0?{value:void 0,done:!0}:(i+=1,{value:r,done:!1})}}},at:(e,n)=>{if(typeof n=="number"&&g(e))return e.op1.at(n>0?n+1:n)}}},Most:{complexity:8200,description:["Return the collection without the last element.","If the collection has only one element, return an empty collection."],signature:"(indexed_collection) -> indexed_collection",collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let n=e.op1.count;if(n!==void 0)return Math.max(0,n-1)},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},isEmpty:e=>{if(!g(e))return;let n=e.op1.count;if(n!==void 0)return n<=1},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.op1.count;if(n===void 0||n<=1)return{next:()=>({value:void 0,done:!0})};let t=1,i=n-1;return{next:()=>t>i?{value:void 0,done:!0}:{value:e.op1.at(t++),done:!1}}},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let t=e.op1.count;if(t!==void 0&&(n<1&&(n=t+1+n),!(n<1||n>t-1)))return e.op1.at(n)}}},Slice:{description:["Return a range of elements from an indexed collection.","If the index is negative, it is counted from the end."],complexity:8200,signature:"(value: indexed_collection, start: number, end: number) -> list",type:([e])=>K(`list<${G(Fe(e.type.type)??"any")}>`),collection:{isLazy:e=>!0,count:e=>{if(!g(e))return;let n=e.op1.count;if(n===void 0)return;let t=W(e.op2)??1;if(t<1&&(t=n+1+t),t<1&&(t=1),t>n)return 0;let i=W(e.op3)??n;return i<1&&(i=n+1+i),i<1&&(i=1),i>n&&(i=n),Math.max(0,i-t+1)},isFinite:e=>!0,at:(e,n)=>{if(typeof n!="number"||!g(e))return;let t=e.op1.count;if(t===void 0)return;let i=W(e.op2)??1;if(i<1&&(i=t+1+i),i<1&&(i=1),i>t)return;let r=W(e.op3)??t;r<1&&(r=t+1+r),r<1&&(r=1),r>t&&(r=t);let s=r-i+1;if(!(s<=0)&&(n<0&&(n=s+1+n),!(n<1||n>s)))return e.op1.at(i+n-1)},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=W(e.op2)??1,t=e.op1.count;if(t===void 0)return{next:()=>({value:void 0,done:!0})};if(n<1&&(n=t+1+n),n<1&&(n=1),n>t)return{next:()=>({value:void 0,done:!0})};let i=W(e.op3)??t;i<1&&(i=t+1+i),i<1&&(i=1),i>t&&(i=t);let r=n,s=i;return{next:()=>{if(r>s)return{value:void 0,done:!0};let o=e.op1.at(r);return r+=1,{value:o,done:!1}}}}}},Reverse:{complexity:8200,signature:"(indexed_collection) -> indexed_collection",type:([e])=>e.type,collection:{isLazy:e=>!0,count:e=>{if(g(e))return e.op1.count},isEmpty:e=>{if(g(e))return e.op1.isEmptyCollection},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},contains:(e,n)=>g(e)?e.op1.contains(n)??!1:!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=-1;return{next:()=>{if(n===0)return{value:void 0,done:!0};let t=e.op1.at(n);return n-=1,{value:t,done:!1}}}},at:(e,n)=>{if(typeof n=="number"&&g(e))return e.op1.at(-n)}}},RotateLeft:{description:"Rotate the elements of the collection to the left by n positions.",complexity:8200,signature:"(indexed_collection, integer?) -> indexed_collection",collection:{isLazy:e=>!0,count:e=>{if(g(e))return e.op1.count},isEmpty:e=>{if(g(e))return e.op1.isEmptyCollection},isFinite:e=>{if(g(e))return e.op1.isFiniteCollection},contains:(e,n)=>g(e)?e.op1.contains(n)??!1:!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.op1.count;if(n===void 0||n<=0)return{next:()=>({value:void 0,done:!0})};let t=W(e.op2)??1;t=(t%n+n)%n;let i=1,r=n;return{next:()=>{if(i===r+1)return{value:void 0,done:!0};i+=1;let s=e.op1.at((i-1-1+t)%n+1);return s===void 0?{value:void 0,done:!0}:{value:s,done:!1}}}},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let t=e.op1.count;if(t===void 0||t<=0||(n<1&&(n=t+1+n),n<1||n>t))return;let i=W(e.op2)??1;return i=(i%t+t)%t,e.op1.at((n-1+i)%t+1)}}},RotateRight:{description:"Rotate the elements of the collection to the right by n positions.",complexity:8200,signature:"(indexed_collection, integer?) -> indexed_collection",collection:{isLazy:e=>!0,count:e=>{if(g(e))return e.op1.count},contains:(e,n)=>g(e)?e.op1.contains(n)??!1:!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=e.op1.count;if(n===void 0||n<=0)return{next:()=>({value:void 0,done:!0})};let t=W(e.op2)??1;t=(t%n+n)%n;let i=1;return{next:()=>{if(i===n+1)return{value:void 0,done:!0};i+=1;let r=(i-1-1+(n-t))%n+1,s=e.op1.at(r);return s===void 0?{value:void 0,done:!0}:{value:s,done:!1}}}},at:(e,n)=>{if(typeof n!="number"||!g(e))return;let t=e.op1.count;if(t===void 0||t<=0||(n<1&&(n=t+1+n),n<1||n>t))return;let i=W(e.op2)??1;i=(i%t+t)%t;let r=(n-1+(t-i))%t+1;return e.op1.at(r)}}},IndexOf:{description:"Return the 1-based index of the first occurrence of value in collection, or 0 if not found.",complexity:8200,signature:"(collection, any) -> integer",evaluate:([e,n],{engine:t})=>{let i=e.indexWhere(r=>r.isSame(n))??void 0;return t.number(i??0)}},IndexWhere:{description:"Return the 1-based index of the first element satisfying the predicate, or 0 if not found.",complexity:8200,signature:"(collection, function) -> integer",evaluate:([e,n],{engine:t})=>{let i=se(n);if(!i)return t.Zero;let r=e.indexWhere(s=>{let o=ie(i([s]));if(o==="True")return!0;if(o==="False")return!1;throw new Error(`Filter predicate must return "True" or "False". ${tn(n)}`)})??void 0;return t.number(r??0)}},Find:{description:"Return the first element of the collection satisfying the predicate, or Nothing if none found.",complexity:8200,signature:"(collection, function) -> any",type:e=>e[0].type,evaluate:([e,n],{engine:t})=>{let i=se(n);if(!i)return t.Nothing;for(let r of e.each()){let s=ie(i([r]));if(s!=="False"){if(s==="True")return r;throw new Error(`Filter predicate must return "True" or "False". ${tn(n)}`)}}return t.Nothing}},CountIf:{description:"Return the number of elements in the collection satisfying the predicate.",complexity:8200,signature:"(collection, function) -> integer",evaluate:([e,n],{engine:t})=>{let i=se(n);if(!i)return t.Zero;let r=0;for(let s of e.each()){let o=ie(i([s]));if(o!=="False")if(o==="True")r++;else throw new Error(`Filter predicate must return "True" or "False". ${tn(n)}`)}return t.number(r)}},Position:{description:"Return a list of indexes of elements in the collection satisfying the predicate.",complexity:8200,signature:"(collection, function) -> list<integer>",type:()=>"list<integer>",evaluate:([e,n],{engine:t})=>{let i=se(n);if(!i)return t.function("List",[]);let r=[],s=1;for(let o of e.each()){let a=ie(i([o]));if(a==="True")r.push(t.number(s));else if(a!=="False")throw new Error(`Filter predicate must return "True" or "False". ${tn(n)}`);s++}return t.function("List",r)}},Ordering:{description:"Return the indexes that would sort the collection.",complexity:8200,signature:"(indexed_collection, function?) -> list<integer>",evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return t.function("List",[]);let i=Qu(e,n);return i?t.function("List",i):t.function("List",[])}},Sort:{description:"Return the elements of the collection sorted according to the given comparison function.",complexity:8200,signature:"(indexed_collection, function?) -> indexed_collection",type:e=>e[0].type,evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return t.function(e.operator,[]);let i=Qu(e,n);if(i)return t.function(e.operator,i.map(r=>e.at(r)))}},Shuffle:{description:"Randomize the order of the elements in the collection. With an optional `seed` argument, the shuffle is deterministic.",complexity:8200,signature:"(indexed_collection, real?) -> indexed_collection",type:e=>e[0].type,evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return;let i=Array.from(e.each()),r=n?.re;if(r!==void 0&&!Number.isNaN(r)){let s=r;for(let o=i.length-1;o>0;o--){let a=Math.floor(zu(s)*(o+1));[i[o],i[a]]=[i[a],i[o]],s=Gu(s)}}else for(let s=i.length-1;s>0;s--){let o=Math.floor(Math.random()*(s+1));[i[s],i[o]]=[i[o],i[s]]}return t.function(e.operator,i)}},Tabulate:{description:"Create a collection by applying a function to each index in the specified dimensions.",complexity:8200,lazy:!0,signature:"(function, integer, integer?) -> collection",canonical:(e,{engine:n})=>{let t=Ye(e[0]);return t?e[2]?n._fn("Tabulate",[t,an(n,e[1]?.canonical,"integer"),an(n,e[2]?.canonical,"integer")]):n._fn("Tabulate",[t,an(n,e[1]?.canonical,"integer")]):null},evaluate:(e,{engine:n})=>{let t=se(e[0]);if(!t)return;if(e.length===1)return n._fn("List",[]);let i=e.slice(1).map(s=>W(s));if(i.some(s=>s===null||s<=0))return;if(i.length===1)return n._fn("List",Array.from({length:i[0]??0},(s,o)=>t([n.number(o+1)])??n.Nothing));let r=(s,o,a=0)=>{if(a===s.length){let l=o.map(c=>n.number(c));return t(l)??n.Nothing}let u=["List"];for(let l=1;l<=s[a];l++)o[a]=l,u.push(r(s,o,a+1));return u};return n.expr(r(i,Array(i.length).fill(0)))}},Tally:{description:"Return a tuple with the unique elements of the collection and their respective counts.",complexity:8200,signature:"(collection) -> tuple<list, list<integer>>",type:([e],{engine:n})=>{let t=e.type.type;return t==="string"?K("tuple<list<string>, list<integer>>"):K(`tuple<list<${G(Fe(t)??"any")}>, list<integer>>`)},evaluate:(e,{engine:n})=>{if(!e[0].isFiniteCollection)return;let[t,i]=Wu(e[0]);return n.tuple(n.function("List",t),n.function("List",i))}},Unique:{description:"Return a list of the unique elements of the collection.",complexity:8200,signature:"(collection) -> list",type:([e])=>`list<${G(Fe(e.type.type)??"any")}>`,evaluate:(e,{engine:n})=>{if(!e[0].isFiniteCollection)return;let[t,i]=Wu(e[0]);return n.function("List",t)}},Partition:{wikidata:"Q381060",complexity:8200,signature:"(collection, integer | function) -> list",type:([e])=>`list<${G(Fe(e.type.type)??"any")}>`,evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return;let i=W(n);if(i!==null&&i>0){let a=Array.from(e.each()),u=[],l=Math.ceil(a.length/i);for(let c=0;c<i;c++){let f=a.slice(c*l,(c+1)*l);u.push(t.function("List",f))}return t.function("List",u)}let r=se(n);if(!r)return;let s=[],o=[];for(let a of e.each()){let u=ie(r([a]));if(u==="True")s.push(a);else if(u==="False")o.push(a);else throw new Error(`Partition predicate must return "True" or "False". ${tn(n)}`)}return t.function("List",[t.function("List",s),t.function("List",o)])}},Chunk:{description:"Split the collection into `k` nearly equal-sized chunks.",complexity:8200,signature:"(collection, integer) -> list<list>",evaluate:([e,n],{engine:t})=>{let i=W(n);if(!e.isFiniteCollection||i===null||i<=0)return;let r=Array.from(e.each()),s=[],o=Math.ceil(r.length/i);for(let a=0;a<i;a++){let u=r.slice(a*o,(a+1)*o);s.push(t.function("List",u))}return t.function("List",s)}},GroupBy:{description:["Partition the collection into a dictionary of lists based on the key returned by the function."],complexity:8200,signature:"(collection, function) -> dictionary<list>",evaluate:([e,n],{engine:t})=>{if(!e.isFiniteCollection)return;let i=se(n);if(!i)return;let r={};for(let s of e.each()){let o=i([s])??t.Nothing,a=(_(o)?o.symbol:void 0)??(ue(o)?o.string:void 0)??o.toString();a in r||(r[a]=[]),r[a].push(s)}return t.function("Dictionary",Object.entries(r).map(([s,o])=>t._fn("Tuple",[t.string(s),t.function("List",o)])))}},Zip:{description:"Combine multiple collections element-wise into a list of tuples. The result has the length of the shortest input.",complexity:8200,signature:"(indexed_collection+) -> list",collection:{isLazy:e=>!0,count:Vr,isFinite:e=>{if(!g(e))return;if(e.nops===0)return!0;let n=!1;for(let t of e.ops){let i=t.isFiniteCollection;if(i===!0)return!0;i===void 0&&(n=!0)}return n?void 0:!1},isEmpty:e=>{if(!g(e))return;if(e.nops===0)return!0;let n=!1;for(let t of e.ops){let i=t.isEmptyCollection;if(i===!0)return!0;i===void 0&&(n=!0)}return n?void 0:!1},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=Vr(e);if(n===void 0||n<=0)return{next:()=>({value:void 0,done:!0})};let t=1;return{next:()=>{if(t===n+1)return{value:void 0,done:!0};t+=1;let i=e.ops.map(r=>r.at(t-1));return i.some(r=>r===void 0)?{value:void 0,done:!0}:{value:e.engine.tuple(...i),done:!1}}}},at:(e,n)=>{if(typeof n!="number"||n<1||!g(e))return;let t=Vr(e);if(t===void 0||n<1||n>t)return;let i=e.ops.map(r=>r.at(n));if(!i.some(r=>r===void 0))return e.engine.tuple(...i)}}},Iterate:{description:"Produce an infinite sequence by repeatedly applying a function to the previous value, starting with an initial value.",complexity:8200,signature:"((index: integer, acc:any) -> any, initial: any?) -> list",canonical:([e,n],{engine:t})=>{let i=Ye(e);if(!i)return null;let r=n?.canonical;return r?t._fn("Iterate",[i,r]):t._fn("Iterate",[i])},collection:{isLazy:e=>!0,count:()=>1/0,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=se(e.op1);if(!n)return{next:()=>({value:void 0,done:!0})};let t=e.op2??e.engine.Nothing,i=0;return{next:()=>(i+=1,t=n([e.engine.number(i),t])??e.engine.Nothing,{value:t,done:!1})}},at:(e,n)=>{if(typeof n!="number"||n<1||!g(e))return;let t=se(e.op1);if(!t)return;let i=e.op2??e.engine.Nothing;for(let r=1;r<n;r++)i=t([e.engine.number(r),i])??e.engine.Nothing;return i}}},Repeat:{description:"Produce a sequence by repeating a single value. With 1 argument, returns an infinite sequence; with 2 arguments (value, count), returns a finite list of `count` copies.",complexity:8200,signature:"(value: any, count: integer?) -> list",evaluate:(e,{engine:n})=>{if(e.length!==2)return;let t=W(e[1]);if(t===null)return;let i=Math.max(0,t);if(!(i>n.maxCollectionSize))return n._fn("List",Array(i).fill(e[0]))},collection:{isLazy:e=>g(e)&&e.ops?.length===1,count:e=>{if(g(e)){if(e.ops?.length===2){let n=W(e.op2);return n!==null?Math.max(0,n):void 0}return 1/0}},isEmpty:e=>{if(g(e)){if(e.ops?.length===2){let n=W(e.op2);return n!==null?n<=0:void 0}return!1}},isFinite:e=>g(e)&&e.ops?.length===2,contains:(e,n)=>{if(!g(e))return!1;if(e.ops?.length===2){let t=W(e.op2);if(t!==null&&t<=0)return!1}return e.op1.isSame(n)},iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};if(e.ops?.length===2){let n=W(e.op2);if(n===null)return{next:()=>({value:void 0,done:!0})};let t=Math.max(0,n),i=0;return{next:()=>i++<t?{value:e.op1,done:!1}:{value:void 0,done:!0}}}return{next:()=>({value:e.op1,done:!1})}},at:(e,n)=>{if(g(e)&&typeof n=="number"){if(e.ops?.length===2){let t=W(e.op2),i=t!==null?Math.max(0,t):0;if(n<1||n>i)return}else if(n<1)return;return e.op1}}}},Cycle:{description:"Produce an infinite sequence by cycling through the elements of a finite collection.",complexity:8200,signature:"(list) -> list",collection:{isLazy:e=>!0,count:e=>{if(g(e))return e.op1.isEmptyCollection?0:1/0},isEmpty:e=>{if(g(e))return e.op1.isEmptyCollection},isFinite:e=>{if(g(e))return e.op1.isEmptyCollection},contains:(e,n)=>g(e)?e.op1.contains(n)??!1:!1,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=1,t=e.op1.count;return t===void 0||t===0?{next:()=>({value:void 0,done:!0})}:{next:()=>{let i=(n-1)%t+1,r=e.op1.at(i);return r===void 0?{value:void 0,done:!0}:(n+=1,{value:r,done:!1})}}},at:(e,n)=>{if(typeof n!="number"||n<1||!g(e))return;let t=e.op1.count;if(t===void 0||t===0)return;let i=(n-1)%t+1;return e.op1.at(i)}}},Fill:{description:"Produce a 2D list (matrix) by applying a function to each pair of row and column indexes.",complexity:8200,signature:"(function, tuple) -> list",collection:{isLazy:e=>!0,count:e=>!g(e)||!g(e.op2)?void 0:e.op2.ops.map(t=>W(t)??0)[0]??0,iterator:e=>{if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=se(e.op1);if(!n)return{next:()=>({value:void 0,done:!0})};if(!g(e.op2))return{next:()=>({value:void 0,done:!0})};let t=e.op2.ops.map(a=>W(a)??0),i=t[0]??0,r=t[1]??0,s=i,o=1;return{next:()=>{if(o===s+1)return{value:void 0,done:!0};o+=1;let a=[];for(let u=1;u<=r;u++)a.push(n([e.engine.number(o-1),e.engine.number(u)])??e.engine.Nothing);return{value:e.engine.function("List",a),done:!1}}}},at:(e,n)=>{if(typeof n!="number"||n<1||!g(e))return;let t=se(e.op1);if(!t||!g(e.op2))return;let i=e.op2.ops.map(u=>W(u)??0),r=i[0]??0,s=i[1]??0;if(n>r*s)return;let o=Math.ceil(n/s),a=(n-1)%s+1;return t([e.engine.number(o),e.engine.number(a)])??e.engine.Nothing}}},ListFrom:{description:"Create a list from the elements of a collection.",complexity:8200,signature:"(value*) -> list",type:e=>{if(e.length===0)return"list";let n="unknown";for(let t of e){if(t.isCollection&&!t.isFiniteCollection)return"list";n=Ee(n,Fe(t.type.type)??n)}return K(`list<${G(n)}>`)},evaluate:(e,{engine:n})=>{let t=[];for(let i of e)if(!i.isCollection)t.push(i);else{if(!i.isFiniteCollection)return;t.push(...Array.from(i.each()))}return n.function("List",t)}},SetFrom:{description:"Create a set from the elements of a collection.",complexity:8200,signature:"(value*) -> set",type:e=>{if(e.length===0)return"set";let n="unknown";for(let t of e){if(t.isCollection&&!t.isFiniteCollection)return"set";n=Ee(n,Fe(t.type.type)??n)}return K(`set<${G(n)}>`)},evaluate:(e,{engine:n})=>{let t=[];for(let i of e)if(!i.isCollection)t.push(i);else{if(!i.isFiniteCollection)return;t.push(...Array.from(i.each()))}return n.function("Set",t)}},TupleFrom:{description:"Create a tuple from the elements of a collection.",complexity:8200,signature:"(value*) -> tuple",evaluate:(e,{engine:n})=>{let t=[];for(let i of e)if(!i.isCollection)t.push(i);else{if(!i.isFiniteCollection)return;t.push(...Array.from(i.each()))}return n.tuple(...t)}},DictionaryFrom:{description:"Create a dictionary from the elements of a collection of (key, value) pairs.",complexity:8200,signature:"(collection) -> dictionary",evaluate:([e],{engine:n})=>{if(!e.isCollection)return;if(g(e,"Record"))return n.function("Dictionary",[...e.ops]);let t=[];for(let i of e.each()){if(!g(i)||i.nops!==2)throw new Error(`Expected a collection of pairs, got ${i.type}`);let r=i.op1,s=i.op2;if(!ue(r))throw new Error(`Expected a string key, got ${r.type}`);t.push(n.tuple(r,s))}return n.function("Dictionary",t)}},RecordFrom:{description:"Create a record from the elements of a collection of (key, value) pairs.",complexity:8200,signature:"(collection) -> record",evaluate:([e],{engine:n})=>{if(!e.isCollection)return;if(g(e,"Dictionary"))return n.function("Record",[...e.ops]);let t=[];for(let i of e.each()){if(!g(i)||i.nops!==2)throw new Error(`Expected a collection of pairs, got ${i.type}`);let r=i.op1,s=i.op2;if(!ue(r))throw new Error(`Expected a string key, got ${r.type}`);t.push(n.tuple(r,s))}return n.function("Record",t)}}};function rn(e){if(!g(e))return[1,0,0];if(e.nops===0)return[1,0,0];let n=e.op1.re;if(!isFinite(n)&&!n&&(n=1),e.nops===1)return[1,n,1];let t=e.op2.re;if(!isFinite(t)&&!t&&(t=1),e.nops===2)return[n,t,t>=n?1:-1];let i=e.op3.re;return!isFinite(i)&&!i&&(i=1),[n,t,i]}function Xp(e,{engine:n}){let t=e[0];if(e.length===1&&g(t,"Matrix")){let[r,s,o]=t.ops;if(!s||ue(s)&&s.string==="..")return o?n._fn("Matrix",[r,n.string("[]"),o]):n._fn("Matrix",[r,s])}let i=e.map(r=>g(r,"Delimiter")?g(r.op1,"Sequence")?n._fn("List",ju(n,r.op1.ops)):n._fn("List",[r.op1?.canonical??n.Nothing]):r.canonical);return n._fn("List",i)}function Qp(e,{engine:n}){if(e=e.map(r=>r.canonical),Ve(e)!==null)return n._fn("Set",[...e]);let t=[],i=r=>t.some(s=>s.isSame(r));for(let r of e)i(r)||t.push(r);return n._fn("Set",t)}function Ve(e){if(e.length!==2)return null;let[n,t]=e,i=r=>r.isCanonical?r:r.canonical;if(g(t,"Element")&&t.nops>=2){if(!_(t.op1))return null;let r=t.op1.symbol;if(!n.has(r))return null;let s=t.nops>=3&&ie(t.op3)!=="Nothing"?t.op3:void 0;return{body:n,variable:r,domain:t.op2,condition:s}}if(g(t,"Condition")&&t.nops>=1){let r=t.op1;if(g(n,"Element")&&n.nops===2&&_(n.op1))return{body:n.op1,variable:n.op1.symbol,domain:i(n.op2),condition:i(r)};if(g(r,"Element")&&r.nops===2&&_(r.op1)){let s=r.op1.symbol;if(n.has(s))return{body:n,variable:s,domain:i(r.op2),condition:void 0}}if(g(r,"And")){let s=r.ops.filter(a=>g(a,"Element")&&a.nops===2&&_(a.op1)&&n.has(a.op1.symbol)),o=s.length===1?s[0]:void 0;if(o&&g(o,"Element")&&_(o.op1)){let a=r.ops.filter(c=>c!==o).map(i),u=n.engine,l=a.length===0?void 0:a.length===1?a[0]:u._fn("And",a);return{body:n,variable:o.op1.symbol,domain:i(o.op2),condition:l}}}return{body:n,variable:_(n)?n.symbol:void 0,domain:void 0,condition:r}}return null}function An(e){let{body:n,variable:t,domain:i,condition:r}=e;if(t===void 0||i===void 0)return;let s=n.engine,o=c=>Br(s._fn("Element",[s.symbol(t),c,...r?[r]:[]]),s),a=o(i);if(a.status!=="success"){let c=i.evaluate();c.isSame(i)||(a=o(c))}if(a.status!=="success")return;let u=_(n)&&n.symbol===t,l=[];for(let c of a.values){let f=u?c:n.subs({[t]:c}).evaluate();l.some(p=>p.isSame(f))||l.push(f)}return l}function el(e,n){let t=!1;for(let i of e){if(n.isSame(i))return!0;if(P(n)&&P(i)){let r=n.isEqual(i);if(r===!0)return!0;r!==!1&&(t=!0)}else ue(n)&&ue(i)||(t=!0)}return t?void 0:!1}function Kp(e,n){let t=An(e);if(t!==void 0)return el(t,n);if(e.domain!==void 0&&e.variable!==void 0&&_(e.body)&&e.body.symbol===e.variable){let i=e.domain.contains(n);if(i===!1)return!1;let r=!0;if(e.condition!==void 0)if(P(n)||ue(n)){let s=e.condition.subs({[e.variable]:n}).evaluate();r=ie(s)==="True"?!0:ie(s)==="False"?!1:void 0}else r=void 0;if(r===!1)return!1;if(i===!0&&r===!0)return!0}}function Wu(e){let n=[],t=[],i=r=>{for(let s=0;s<n.length;s++)if(n[s].isSame(r))return s;return-1};for(let r of e.each()){let s=i(r);s>=0?t[s]++:(n.push(r),t.push(1))}return[n,t]}function*nl(e,n,t){let i=t;for(let r of e.each()){let s=n(i,r);if(s===null)return;yield i,i=s}return i}function em(e){return e.some(n=>n.type.matches("record"))?"record":e.some(n=>n.type.matches("dictionary"))?"dictionary":e.some(n=>n.type.matches("set"))?"set":"list"}function Xu(e,n){return e.operator!==n.operator||!g(e)||!g(n)||e.nops!==n.nops?!1:e.ops.every((t,i)=>t.isSame(n.ops[i]))}function Qu(e,n=void 0){let t=n?se(n):void 0,i=t?(o,a)=>{let u=t([o,a]);return u?.isNegative?-1:u?.isSame(0)?0:1}:(o,a)=>o.isLess(a)?-1:o.isEqual(a)?0:1,r=e.count;if(r===void 0||!Number.isFinite(r)||r<1)return;let s=Array.from({length:r},(o,a)=>a+1);return s.sort((o,a)=>{let u=e.at(o),l=e.at(a);return i(u,l)}),s}function qr(e){if(e.length===0)return[];let n=[];for(let t of e)ie(t)!=="Nothing"&&(g(t,"Sequence")?n.push(...qr([...t.ops])):ue(t)?n.push(t):t.isCollection?n.push(...qr([...t.each()])):n.push(t));return n}function nm(e){if(!g(e))return{next:()=>({value:void 0,done:!0})};let n=Math.max(0,W(e.op2)??0);if(n===0)return{next:()=>({value:void 0,done:!0})};let t=1,i=0;return{next:()=>{if(i>=Math.abs(n))return{value:void 0,done:!0};let r=e.op1.at(t);return r?(t+=1,i+=1,{value:r,done:!1}):{value:void 0,done:!0}}}}function Ku(e){if(!g(e))return;let[n,t]=e.ops,i=n.count;if(i===void 0)return;let r=Math.max(0,W(t)??0);return Number.isFinite(r)?Math.min(i,r):1/0}function Vr(e){if(!g(e))return;let n=e.ops.map(t=>t.count);if(!n.some(t=>t===void 0))return n.some(t=>!Number.isFinite(t))?1/0:n.length===0?0:Math.min(...n)}function tl(e){e?.operator,g(e);let n=1,t=n+Fn,i,r=!0,s=e,o=s.op1;i=_(o)?o.symbol:void 0,n=Math.floor(s.op2.re),isNaN(n)&&(n=1),Number.isFinite(n)||(r=!1);let a=s.op3;return(_(a)?a.symbol:void 0)==="Nothing"||a.isInfinity?(r=!1,t=1/0):(isNaN(a.re)||(t=Math.floor(a.re??t)),Number.isFinite(t)||(r=!1)),r||(!Number.isFinite(n)&&!Number.isFinite(t)?(n=-Fn/2,t=n+Fn):Number.isFinite(n)?t=n+Fn:n=t-Fn),{index:i,lower:n,upper:t,isFinite:r}}var x=class e{static FOLD_OPERAND_PREC=1e3;static compile(n,t,i=0){if(n===void 0)return"";if(!n.isValid)throw new Error(`Cannot compile invalid expression: "${n.toString()}"`);if(_(n)){let r=n.symbol,s=t.operators?.(r);if(s!==void 0)return`(a,b) => a ${s[0]} b`;let o=t.var?.(r);return o!==void 0?o:e.tryFoldKnownSymbol(n.engine,r,t)??r}if(P(n)){if(n.im!==0){if(!t.complex)throw new Error("Complex numbers are not supported by this target");return t.complex(n.re,n.im)}return t.number(n.re)}if(ue(n))return t.string(n.string);if(!g(n))throw new Error(`Cannot compile expression: "${n.toString()}"`);return e.compileExpr(n.engine,n.operator,n.ops,i,t)}static compileExpr(n,t,i,r,s){if(t==="Error")throw new Error("Error");if(t==="Sequence")return i.length===0?"":`(${i.map(u=>e.compile(u,s,r)).join(", ")})`;if(t==="Sum"||t==="Product"){let u=s.functions?.(t);return typeof u=="function"?u(i,l=>e.compile(l,s),s):typeof u=="string"?`${u}(${i.map(l=>e.compile(l,s)).join(", ")})`:e.compileLoop(t,i,s)}let o=s.operators?.(t);if(o!==void 0&&!i.some(l=>e.isComplexValued(l))){if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(o[0]))return`${o[0]}(${i.map(c=>e.compile(c,s)).join(", ")})`;if(i.every(c=>!c.isCollection)){if(yr(t)&&i.length>2){let f=[];for(let p=0;p<i.length-1;p++)f.push(e.compileExpr(n,t,[i[p],i[p+1]],o[1],s));return`(${f.join(") && (")})`}let c;if(i.length===1)c=`${o[0]}${e.compile(i[0],s,o[1])}`;else{let f=t==="Power";c=i.map((p,d)=>{let b=f&&d<i.length-1?o[1]+1:o[1];return e.compile(p,s,b)}).join(` ${o[0]} `)}return o[1]<r?`(${c})`:c}}if(t==="Function"){let u=s.functions?.(t);if(typeof u=="function")return u(i,c=>e.compile(c,s),s);let l=i.slice(1).map(c=>_(c)?c.symbol:"_");return`((${l.join(", ")}) => ${e.compile(i[0].canonical,{...s,var:c=>l.includes(c)?c:s.var(c)})})`}if(t==="Declare"){let u=_(i[0])?i[0].symbol:"_";return s.declare?s.declare(u):`let ${u}`}if(t==="Assign")return`${_(i[0])?i[0].symbol:"_"} = ${e.compile(i[1],s)}`;if(t==="Return")return`return ${e.compile(i[0],s)}`;if(t==="Break")return"break";if(t==="Continue")return"continue";if(t==="Loop"){let u=s.functions?.(t);return typeof u=="function"?u(i,l=>e.compile(l,s),s):e.compileForLoop(i,s)}if(t==="If"){if(i.length!==3)throw new Error("If: wrong number of arguments");let u=s.functions?.(t);return u?typeof u=="function"?u(i,l=>e.compile(l,s),s):`${u}(${i.map(l=>e.compile(l,s)).join(", ")})`:`((${e.compile(i[0],s)}) ? (${e.compile(i[1],s)}) : (${e.compile(i[2],s)}))`}if(t==="Which"){if(i.length<2||i.length%2!==0)throw new Error("Which: expected even number of arguments (condition/value pairs)");let u=s.functions?.(t);if(u)return typeof u=="function"?u(i,c=>e.compile(c,s),s):`${u}(${i.map(c=>e.compile(c,s)).join(", ")})`;let l=c=>{if(c>=i.length)return"NaN";let f=i[c],p=i[c+1];return _(f,"True")?`(${e.compile(p,s)})`:`((${e.compile(f,s)}) ? (${e.compile(p,s)}) : ${l(c+2)})`};return l(0)}if(t==="When"){if(i.length!==2)throw new Error("When: expected exactly 2 arguments (expr, cond)");let u=s.functions?.(t);if(u)return typeof u=="function"?u(i,f=>e.compile(f,s),s):`${u}(${i.map(f=>e.compile(f,s)).join(", ")})`;if(_(i[1],"True"))return`(${e.compile(i[0],s)})`;if(_(i[1],"False"))return"NaN";let l=e.compile(i[0],s);return`((${e.compile(i[1],s)}) ? (${l}) : NaN)`}if(t==="Block")return e.compileBlock(i,s);let a=s.functions?.(t);if(!a)throw new Error(`Unknown operator \`${t}\``);if(typeof a=="function"){let u=n.lookupDefinition(t);if(vt(u)&&u.operator.broadcastable&&i.length===1&&ri(i[0])){let l=e.tempVar();return`(${e.compile(i[0],s)}).map((${l}) => ${a([i[0].engine.expr(l)],c=>e.compile(c,s),s)})`}return a(i,l=>e.compile(l,s),s)}return`${a}(${i.map(u=>e.compile(u,s)).join(", ")})`}static compileBlock(n,t){let i=[];for(let a of n)if(g(a,"Declare")){let u=a.ops[0];_(u)&&i.push(u.symbol)}if(n.length===1&&i.length===0)return e.compile(n[0],t);let r={};if(t.declare&&t.language){let u=t.language==="wgsl"?"vec2f":"vec2";for(let l of i)for(let c of n){if(g(c,"Declare")&&_(c.ops[0],l)&&_(c.ops[1],"complex")){r[l]=u;break}if(g(c,"Assign")&&_(c.ops[0],l)){e.isComplexValued(c.ops[1])&&(r[l]=u);break}}}let s={...t,var:a=>i.includes(a)?a:t.var(a)},o=n.filter(a=>!_(a,"Nothing")).map(a=>g(a,"Declare")&&_(a.ops[0])&&t.declare?t.declare(a.ops[0].symbol,r[a.ops[0].symbol]):e.compile(a,s)).filter(a=>a!=="");return o.length===0?"":t.block?t.block(o):(o[o.length-1]=`return ${o[o.length-1]}`,`(() => {${t.ws(`
|
|
10
10
|
`)}${o.join(`;${t.ws(`
|
|
11
11
|
`)}`)}${t.ws(`
|
|
12
12
|
`)}})()`)}static compileForLoop(n,t){if(!n[0])throw new Error("Loop: no body");if(!n[1])throw new Error("Loop: no indexing set");let i=n[0],r=n.slice(1);if(r.length>1||r.length===1&&g(r[0],"Element")&&!e.isLegacyCompatibleRange(r[0].ops[1])){let y=t.language??"";if(y==="glsl"||y==="wgsl")throw new Error(`${y.toUpperCase()}: multi-Element Loop comprehension is not yet supported. TODO(E3-GLSL): unroll or use a fixed-size array.`);let E=[];for(let D=0;D<r.length;D++){let Z=r[D];if(!g(Z,"Element"))throw new Error(`Loop: argument ${D+1} must be an Element clause, got ${Z.operator??"?"}`);if(!_(Z.ops[0]))throw new Error(`Loop: Element index (argument ${D+1}) must be a symbol`);E.push(Z)}let N=new Set(E.map(D=>D.ops[0].symbol)),k=t.number(0)!=="0",$={...t,var:D=>N.has(D)?k?t.number(0).replace("0",D):D:t.var(D)},O=`result.push(${e.compile(i,$)});`;for(let D=E.length-1;D>=0;D--){let Z=E[D],V=Z.ops[0].symbol,q=Z.ops[1],H;g(q,"Range")?H=e.compileRangeIterable(q,$):H=e.compile(q,$),O=`for (const ${V} of ${H}) { ${O} }`}return`(() => { const result = []; ${O} return result; })()`}let o=r[0];if(!g(o,"Element"))throw new Error("Loop: expected Element(index, Range(lo, hi))");let a=o.ops[0],u=o.ops[1];if(!_(a))throw new Error("Loop: index must be a symbol");if(!g(u,"Range"))throw new Error("Loop: expected Range(lo, hi)");let l=a.symbol,c=Math.floor(u.ops[0].re),f=Math.floor(u.ops[1].re);if(!Number.isFinite(c)||!Number.isFinite(f))throw new Error("Loop: bounds must be finite numbers");let p=t.number(0)!=="0",d={...t,var:y=>y===l?p?t.number(0).replace("0",l):l:t.var(y)};if(e.isCollectibleLoopValue(i)){let y=e.compile(i,d),E=e.tempVar();return`(() => {${t.ws(`
|
|
@@ -1691,9 +1691,9 @@ vec2 _iv_mod(vec2 a, vec2 b) {
|
|
|
1691
1691
|
// Composed path widens via the inner _iv_sub/_iv_mul/_iv_div/_iv_floor.
|
|
1692
1692
|
return _iv_sub(a, _iv_mul(b, _iv_floor(_iv_div(a, b))));
|
|
1693
1693
|
}
|
|
1694
|
-
`;function Dc(e={}){let n=e.trigAbsPad??0;return nh.replace("__IV_TRIG_ABS__",ke(n))}var
|
|
1694
|
+
`;function Dc(e={}){let n=e.trigAbsPad??0;return nh.replace("__IV_TRIG_ABS__",ke(n))}var A3=Dc(),Pc={Add:(e,n)=>{if(e.length===0)return"vec2(0.0, 0.0)";let t=n(e[0]);for(let i=1;i<e.length;i++)t=`_iv_add(${t}, ${n(e[i])})`;return t},Subtract:([e,n],t)=>{if(e===null||n===null)throw new Error("Subtract: missing argument");return`_iv_sub(${t(e)}, ${t(n)})`},Multiply:(e,n)=>{if(e.length===0)return"vec2(1.0, 1.0)";let t=n(e[0]);for(let i=1;i<e.length;i++)t=`_iv_mul(${t}, ${n(e[i])})`;return t},Divide:([e,n],t)=>{if(e===null||n===null)throw new Error("Divide: missing argument");return`_iv_div(${t(e)}, ${t(n)})`},Negate:([e],n)=>{if(e===null)throw new Error("Negate: no argument");return`_iv_negate(${n(e)})`},Square:([e],n)=>{if(e===null)throw new Error("Square: no argument");return`_iv_square(${n(e)})`},Sqrt:([e],n)=>{if(e===null)throw new Error("Sqrt: no argument");return`_iv_sqrt(${n(e)})`},Abs:([e],n)=>{if(e===null)throw new Error("Abs: no argument");return`_iv_abs(${n(e)})`},Exp:([e],n)=>{if(e===null)throw new Error("Exp: no argument");return`_iv_exp(${n(e)})`},Ln:([e],n)=>{if(e===null)throw new Error("Ln: no argument");return`_iv_ln(${n(e)})`},Log:(e,n)=>e.length===1?`_iv_log10(${n(e[0])})`:`_iv_div(_iv_ln(${n(e[0])}), _iv_ln(${n(e[1])}))`,Lb:([e],n)=>{if(e===null)throw new Error("Lb: no argument");return`_iv_log2(${n(e)})`},Sin:([e],n)=>{if(e===null)throw new Error("Sin: no argument");return`_iv_sin(${n(e)})`},Cos:([e],n)=>{if(e===null)throw new Error("Cos: no argument");return`_iv_cos(${n(e)})`},Tan:([e],n)=>{if(e===null)throw new Error("Tan: no argument");return`_iv_tan(${n(e)})`},Arcsin:([e],n)=>{if(e===null)throw new Error("Arcsin: no argument");return`_iv_asin(${n(e)})`},Arccos:([e],n)=>{if(e===null)throw new Error("Arccos: no argument");return`_iv_acos(${n(e)})`},Arctan:([e],n)=>{if(e===null)throw new Error("Arctan: no argument");return`_iv_atan(${n(e)})`},Floor:([e],n)=>{if(e===null)throw new Error("Floor: no argument");return`_iv_floor(${n(e)})`},Ceil:([e],n)=>{if(e===null)throw new Error("Ceil: no argument");return`_iv_ceil(${n(e)})`},Round:([e],n)=>{if(e===null)throw new Error("Round: no argument");return`_iv_round(${n(e)})`},Truncate:([e],n)=>{if(e===null)throw new Error("Truncate: no argument");return`_iv_trunc(${n(e)})`},Fract:([e],n)=>{if(e===null)throw new Error("Fract: no argument");return`_iv_fract(${n(e)})`},Sign:([e],n)=>{if(e===null)throw new Error("Sign: no argument");return`_iv_sign(${n(e)})`},Heaviside:([e],n)=>{if(e===null)throw new Error("Heaviside: no argument");return`_iv_heaviside(${n(e)})`},Mod:([e,n],t)=>{if(e===null||n===null)throw new Error("Mod: missing argument");return`_iv_mod(${t(e)}, ${t(n)})`},Min:(e,n)=>{if(e.length===0)throw new Error("Min: no argument");let t=n(e[0]);for(let i=1;i<e.length;i++)t=`_iv_min(${t}, ${n(e[i])})`;return t},Max:(e,n)=>{if(e.length===0)throw new Error("Max: no argument");let t=n(e[0]);for(let i=1;i<e.length;i++)t=`_iv_max(${t}, ${n(e[i])})`;return t},Power:([e,n],t)=>{if(e===null||n===null)throw new Error("Power: missing argument");if(_(e,"ExponentialE"))return`_iv_exp(${t(n)})`;if(P(n)&&n.im===0){let i=n.re;if(i===.5)return`_iv_sqrt(${t(e)})`;if(i===2)return`_iv_square(${t(e)})`;if(Number.isInteger(i)&&i>=0)return`_iv_powi(${t(e)}, ${ke(i)})`;if(!Number.isInteger(i)&&i>0)return`_iv_powf(${t(e)}, ${ke(i)})`;throw new Error(`interval-glsl: Power with exponent \`${n.toString()}\` is not yet supported`)}throw new Error("interval-glsl: Power with a variable exponent is not yet supported")}},Qi={Pi:"vec2(3.14159265359, 3.14159265359)",ExponentialE:"vec2(2.71828182846, 2.71828182846)",GoldenRatio:"vec2(1.61803398875, 1.61803398875)",CatalanConstant:"vec2(0.91596559417, 0.91596559417)",EulerGamma:"vec2(0.57721566490, 0.57721566490)"},Uo=class extends Pt{languageId="interval-glsl";getOperators(){return{}}getFunctions(){return Pc}getConstants(){return Qi}createTarget(n={}){return super.createTarget({operators:()=>{},functions:t=>Pc[t],number:t=>`vec2(${ke(t)}, ${ke(t)})`,complex:()=>{throw new Error("interval-glsl: complex values are not supported")},var:t=>Qi[t],...n})}getPreamble(n={}){return Dc(n)}compile(n,t={}){let{vars:i,trigAbsPad:r}=t,s=this.createTarget({var:u=>{if(i&&u in i)return i[u];if(u in Qi)return Qi[u]}}),o=x.compile(n,s),a=x.withReferences({target:"interval-glsl",success:!0,code:o},n,s,i?new Set(Object.keys(i)):void 0);return(o.includes("_iv_")||(a.freeSymbols?.length??0)>0)&&(a.preamble=this.getPreamble({trigAbsPad:r})),a}compileExclusionShader(n,t={}){let{version:i="300 es",precision:r="highp",trigAbsPad:s}=t,o=this.compile(n),a=o.freeSymbols??[];if(a.length>2)throw new Error(`interval-glsl exclusion shader supports at most 2 free variables (got ${a.length}: ${a.join(", ")})`);let u=a.map(d=>`vec2 ${d}`).join(", "),[l,c]=a,f=["void main() {"];f.push(" vec2 _cell = gl_FragCoord.xy / u_resolution;"),f.push(" vec2 _step = 1.0 / u_resolution;");let p=[];return l!==void 0&&(f.push(" float _xlo = mix(u_domainX.x, u_domainX.y, _cell.x);"),f.push(" float _xhi = mix(u_domainX.x, u_domainX.y, _cell.x + _step.x);"),f.push(" float _xext = max(abs(u_domainX.x), abs(u_domainX.y));"),p.push("_iv_widen_box(vec2(_xlo, _xhi), _xext)")),c!==void 0&&(f.push(" float _ylo = mix(u_domainY.x, u_domainY.y, _cell.y);"),f.push(" float _yhi = mix(u_domainY.x, u_domainY.y, _cell.y + _step.y);"),f.push(" float _yext = max(abs(u_domainY.x), abs(u_domainY.y));"),p.push("_iv_widen_box(vec2(_ylo, _yhi), _yext)")),f.push(` vec2 _f = _implicit(${p.join(", ")});`),f.push(" bool _excluded = (_f.x > 0.0 || _f.y < 0.0);"),f.push(" fragColor = _excluded ? vec4(0.0, 0.0, 0.0, 1.0) : vec4(1.0);"),f.push("}"),[`#version ${i}`,`precision ${r} float;`,"",this.getPreamble({trigAbsPad:s}).trim(),"","uniform vec2 u_domainX; // [min, max] for the 1st free variable","uniform vec2 u_domainY; // [min, max] for the 2nd free variable","uniform vec2 u_resolution; // render target size, in pixels","","out vec4 fragColor;","","// Interval evaluation of the implicit field f over a cell box. The box is","// outward-rounded by the caller (main(), via _iv_widen_box).",`vec2 _implicit(${u}) {`,` return ${o.code};`,"}","",f.join(`
|
|
1695
1695
|
`),""].join(`
|
|
1696
|
-
`)}};var
|
|
1696
|
+
`)}};var $3="0.64.0";export{x as BaseCompiler,Pt as GLSLTarget,Pn as GPUShaderTarget,Uo as IntervalGLSLTarget,Ho as IntervalJavaScriptTarget,bs as JavaScriptTarget,_s as PythonTarget,Ts as WGSLTarget,um as compile,$3 as version};
|
|
1697
1697
|
/*! Bundled license information:
|
|
1698
1698
|
|
|
1699
1699
|
complex-esm/dist/src/complex.js:
|