

export const SIMULATION_JS_RESERVED_WORDS = new Set([
    // Copied from formula/Formula.js -> bootCalc
    "-parent",
    "e",
    "pi",
    "phi",

    // Copied from CalcMap.js
    "mod",
    "expt",
    "abs",
    "sin",
    "asin",
    "cos",
    "acos",
    "tan",
    "atan",
    "sqrt",
    "log",
    "exp",
    "round",
    "floor",
    "ceiling",

    // Copied in two goes from formula/CalcFunctions.js
    // First on selecting all `defineFunction(simulate, "`
    // And second on selecting all `simulate.varBank["`
    "RandBeta",
    "RandDist",
    "RandBoolean",
    "Rand",
    "RandNormal",
    "RandExp",
    "RandLognormal",
    "RandBinomial",
    "RandNegativeBinomial",
    "RandGamma",
    "RandPoisson",
    "RandTriangular",
    "Magnitude",
    "Abs",
    "sin",
    "cos",
    "tan",
    "asin",
    "acos",
    "atan",
    "arcsin",
    "arccos",
    "arctan",
    "Sign",
    "Sqrt",
    "Ln",
    "Log",
    "Logit",
    "Expit",
    "Round",
    "Ceiling",
    "Floor",
    "Exp",
    "Sample",
    "IndexOf",
    "Contains",
    "Collapse",
    "Select",
    "Reverse",
    "Reverse",
    "Sort",
    "Sort",
    "Unique",
    "Unique",
    "Union",
    "Intersection",
    "Difference",
    "Factorial",
    "Max",
    "Max",
    "Lookup",
    "Fill",
    "Min",
    "Min",
    "Mean",
    "Mean",
    "Sum",
    "Sum",
    "Product",
    "Product",
    "Median",
    "Median",
    "StdDev",
    "StdDev",
    "Correlation",
    "Keys",
    "Values",
    "Length",
    "Count",
    "Flatten",
    "CDFNormal",
    "PDFNormal",
    "InvNormal",
    "CDFLogNormal",
    "PDFLogNormal",
    "InvLogNormal",
    "CDFt",
    "PDFt",
    "Invt",
    "CDFF",
    "PDFF",
    "InvF",
    "CDFChiSquared",
    "PDFChiSquared",
    "InvChiSquared",
    "CDFExponential",
    "PDFExponential",
    "InvExponential",
    "CDFPoisson",
    "PMFPoisson",
    "SetRandSeed",
    "Alert",
    "Console",
    "Prompt",
    "Confirm",
    "Parse",
    "Split",
    "Join",
    "Trim",
    "Range",
    "Length",
    "IndexOf",
    "Contains",
    "Lowercase",
    "Uppercase",
    // ... second copying from formula/CalcFunctions.js on `simulate.varBank["`
    // This has many duplicates from initial multi select but not all such as:
    // "ifthenelse"
    "sqrt",
    "sum",
    "ifthenelse",
    "ifthenelse",
    "assert",
    "assert",
    "map",
    "map",
    "map",
    "indexof",
    "filter",
    "map",
    "select",
    "filter",
    "filter",
    "join",
    "repeat",
    "repeat",
    "join",
    "reverse",
    "join",
    "sort",
    "join",
    "unique",
    "unique",
    "join",
    "unique",
    "unique",
    "max",
    "flatten",
    "flatten",
    "min",
    "mean",
    "sum",
    "product",
    "sort",
    "median",
    "mean",
    "stddev",
    "mean",
    "mean",
    "stddev",
    "stddev",
    "sum",
    "count",
    "count",
    "join",
    "flatten",
    "join",
    "flatten",
    "stringbase",
    "vectorbase",

    // Copied from Functions.js
    "Stop",
    "Pause",
    "Time",
    "TimeStep",
    "TimeLength",
    "TimeStart",
    "TimeEnd",
    "Seconds",
    "Minutes",
    "Hours",
    "Days",
    "Weeks",
    "Months",
    "Years",
    "Seasonal",
    "Unitless",
    "RemoveUnits",
    "PastMean",
    "PastMedian",
    "PastValues",
    "PastStdDev",
    "PastCorrelation",
    "PastMax",
    "PastMin",
    "Pulse",
    "Ramp",
    "Step",
    "Delay",
    "Smooth",
    "Delay1",
    "Delay3",
    "Remove",
    "Add",
    "FindAll",
    "ResetTimer",
    "Transition",
    "Value",
    "SetValue",
    "FindIndex",
    "FindState",
    "FindNotState",
    "FindNearby",
    "FindNearest",
    "FindFurthest",
    "Index",
    "Connect",
    "Unconnect",
    "Connected",
    "ConnectionWeight",
    "SetConnectionWeight",
    "Width",
    "Height",
    "Distance",
    "Location",
    "SetLocation",
    "Move",
    "MoveTowards",
])

;[...SIMULATION_JS_RESERVED_WORDS].forEach(w => SIMULATION_JS_RESERVED_WORDS.add(w.toLowerCase()))
