diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json index 8285dbd..f2adf3c 100644 --- a/.obsidian/community-plugins.json +++ b/.obsidian/community-plugins.json @@ -1,7 +1,6 @@ [ "mousewheel-image-zoom", "obsidian-image-toolkit", - "numerals", "copy-as-html", "copy-document-as-html", "obsidian-pandoc", @@ -23,9 +22,9 @@ "recent-files-obsidian", "obsidian-auto-link-title", "advanced-canvas", - "obsidian-minimal-settings", "obsidian-mindmap-nextgen", "obsidian-plantuml", "mcp-tools", - "obsidian-local-rest-api" + "obsidian-local-rest-api", + "obsidian-excel-to-markdown-table" ] \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-excalidraw-plugin/data.json b/.obsidian/plugins/obsidian-excalidraw-plugin/data.json index 732d146..6027b66 100644 --- a/.obsidian/plugins/obsidian-excalidraw-plugin/data.json +++ b/.obsidian/plugins/obsidian-excalidraw-plugin/data.json @@ -102,6 +102,223 @@ "version": 2, "source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.9.2", "libraryItems": [ + { + "id": "Jcb27Z7tsLyhmBl-4Yl7A", + "status": "unpublished", + "elements": [ + { + "id": "e01IusppIXekthvQI4dsi", + "type": "rectangle", + "x": -646.8844788749002, + "y": -374.28650595561646, + "width": 22.13098427962416, + "height": 22.13098427962416, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "zoxFXczlNsNs7_uDZMfy8" + ], + "frameId": null, + "index": "aN", + "roundness": null, + "seed": 1261532191, + "version": 64, + "versionNonce": 1784958993, + "isDeleted": false, + "boundElements": [], + "updated": 1749053618097, + "link": null, + "locked": false + }, + { + "id": "OJsW5dAkHk_bM3YQqzdLc", + "type": "line", + "x": -646.9383377449386, + "y": -374.18299579915805, + "width": 21.67528767610702, + "height": 21.67528767610696, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "zoxFXczlNsNs7_uDZMfy8" + ], + "frameId": null, + "index": "aO", + "roundness": null, + "seed": 176168273, + "version": 35, + "versionNonce": 416626047, + "isDeleted": false, + "boundElements": [], + "updated": 1749053618097, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 21.67528767610702, + 21.67528767610696 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "qVrEcAmiTyjmVNhcIpBbv", + "type": "line", + "x": -646.9383377449386, + "y": -370.4296992318668, + "width": 18.20348835136258, + "height": 18.20348835136258, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "zoxFXczlNsNs7_uDZMfy8" + ], + "frameId": null, + "index": "aP", + "roundness": null, + "seed": 255581791, + "version": 36, + "versionNonce": 1919034865, + "isDeleted": false, + "boundElements": [], + "updated": 1749053618097, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 18.20348835136258, + 18.20348835136258 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "2LRECUsuFp9ZwO3Yh5ZDs", + "type": "line", + "x": -646.9383377449386, + "y": -365.73807852275274, + "width": 13.473250240646507, + "height": 13.533411429315947, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "zoxFXczlNsNs7_uDZMfy8" + ], + "frameId": null, + "index": "aQ", + "roundness": null, + "seed": 2651295, + "version": 33, + "versionNonce": 2024811935, + "isDeleted": false, + "boundElements": [], + "updated": 1749053618097, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 13.473250240646507, + 13.533411429315947 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "K5zwTUBZbp8soB1Y2dF15", + "type": "line", + "x": -646.9383377449386, + "y": -359.54513918672217, + "width": 7.487284433781497, + "height": 7.366962056442219, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "zoxFXczlNsNs7_uDZMfy8" + ], + "frameId": null, + "index": "aR", + "roundness": null, + "seed": 387931679, + "version": 33, + "versionNonce": 1273642961, + "isDeleted": false, + "boundElements": [], + "updated": 1749053618097, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7.487284433781497, + 7.366962056442219 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + } + ], + "created": 1749053623052 + }, { "id": "qLdU5G5F49LoCvIYKf21c", "status": "unpublished", diff --git a/.obsidian/plugins/obsidian-excel-to-markdown-table/main.js b/.obsidian/plugins/obsidian-excel-to-markdown-table/main.js new file mode 100644 index 0000000..7080987 --- /dev/null +++ b/.obsidian/plugins/obsidian-excel-to-markdown-table/main.js @@ -0,0 +1,230 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ + +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __markAsModule = (target) => __defProp(target, "__esModule", { value: true }); +var __export = (target, all) => { + __markAsModule(target); + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __reExport = (target, module2, desc) => { + if (module2 && typeof module2 === "object" || typeof module2 === "function") { + for (let key of __getOwnPropNames(module2)) + if (!__hasOwnProp.call(target, key) && key !== "default") + __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable }); + } + return target; +}; +var __toModule = (module2) => { + return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2); +}; +var __async = (__this, __arguments, generator) => { + return new Promise((resolve, reject) => { + var fulfilled = (value) => { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + }; + var rejected = (value) => { + try { + step(generator.throw(value)); + } catch (e) { + reject(e); + } + }; + var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); + step((generator = generator.apply(__this, __arguments)).next()); + }); +}; + +// src/main.ts +__export(exports, { + default: () => ExcelToMarkdownTablePlugin +}); +var import_obsidian = __toModule(require("obsidian")); + +// src/table-alignment-syntax.ts +var ALIGNED_LEFT_SYNTAX = { + prefix: "", + postfix: "", + adjust: 0 +}; +var ALIGNED_RIGHT_SYNTAX = { + prefix: "", + postfix: ":", + adjust: 1 +}; +var ALIGNED_CENTER_SYNTAX = { + prefix: ":", + postfix: ":", + adjust: 2 +}; + +// src/excel-markdown-helpers.ts +var ALIGNED_LEFT = "l"; +var ALIGNED_RIGHT = "r"; +var ALIGNED_CENTER = "c"; +var EXCEL_COLUMN_DELIMITER = " "; +var MARKDOWN_NEWLINE = "
"; +var UNESCAPED_DOUBLE_QUOTE = '"'; +var EXCEL_ROW_DELIMITER_REGEX = /[\n\u0085\u2028\u2029]|\r\n?/g; +var COLUMN_ALIGNMENT_REGEX = /^(\^[lcr])/i; +var EXCEL_NEWLINE_ESCAPED_CELL_REGEX = /"([^\t]*(?<=[^\r])\n[^\t]*)"/g; +var EXCEL_NEWLINE_REGEX = /\n/g; +var EXCEL_DOUBLE_QUOTE_ESCAPED_REGEX = /""/g; +function addMarkdownSyntax(rows, columnWidths) { + return rows.map(function(row, rowIndex) { + return "| " + row.map(function(column, index) { + column = column.replace("|", "\\|"); + return column + Array(columnWidths[index] - column.length + 1).join(" "); + }).join(" | ") + " |"; + }); +} +function addAlignmentSyntax(markdownRows, columnWidths, colAlignments) { + let result = Object.assign([], markdownRows); + result.splice(1, 0, "|" + columnWidths.map(function(width, index) { + let { prefix, postfix, adjust } = calculateAlignmentMarkdownSyntaxMetadata(colAlignments[index]); + return prefix + Array(columnWidths[index] + 3 - adjust).join("-") + postfix; + }).join("|") + "|"); + return result; +} +function calculateAlignmentMarkdownSyntaxMetadata(alignment) { + switch (alignment) { + case ALIGNED_LEFT: + return ALIGNED_LEFT_SYNTAX; + case ALIGNED_CENTER: + return ALIGNED_CENTER_SYNTAX; + case ALIGNED_RIGHT: + return ALIGNED_RIGHT_SYNTAX; + default: + return ALIGNED_LEFT_SYNTAX; + } +} +function getColumnWidthsAndAlignments(rows) { + let colAlignments = []; + return { + columnWidths: rows[0].map(function(column, columnIndex) { + let alignment = columnAlignment(column); + colAlignments.push(alignment); + column = column.replace(COLUMN_ALIGNMENT_REGEX, ""); + rows[0][columnIndex] = column; + return columnWidth(rows, columnIndex); + }), + colAlignments + }; +} +function columnAlignment(columnHeaderText) { + var m = columnHeaderText.match(COLUMN_ALIGNMENT_REGEX); + if (m) { + var alignChar = m[1][1].toLowerCase(); + return columnAlignmentFromChar(alignChar); + } + return ALIGNED_LEFT; +} +function columnAlignmentFromChar(alignChar) { + switch (alignChar) { + case ALIGNED_LEFT: + return ALIGNED_LEFT; + case ALIGNED_CENTER: + return ALIGNED_CENTER; + case ALIGNED_RIGHT: + return ALIGNED_RIGHT; + default: + return ALIGNED_LEFT; + } +} +function columnWidth(rows, columnIndex) { + return Math.max.apply(null, rows.map(function(row) { + return row[columnIndex] && row[columnIndex].length || 0; + })); +} +function splitIntoRowsAndColumns(data) { + var rows = data.split(EXCEL_ROW_DELIMITER_REGEX).map(function(row) { + return row.split(EXCEL_COLUMN_DELIMITER); + }); + return rows; +} +function replaceIntraCellNewline(data) { + let cellReplacer = (_) => _.slice(1, -1).replace(EXCEL_DOUBLE_QUOTE_ESCAPED_REGEX, UNESCAPED_DOUBLE_QUOTE).replace(EXCEL_NEWLINE_REGEX, MARKDOWN_NEWLINE); + return data.replace(EXCEL_NEWLINE_ESCAPED_CELL_REGEX, cellReplacer); +} + +// src/excel-markdown-tables.ts +var LINE_ENDING = "\n"; +function excelToMarkdown(rawData) { + let data = rawData.trim(); + var intraCellNewlineReplacedData = replaceIntraCellNewline(data); + var rows = splitIntoRowsAndColumns(intraCellNewlineReplacedData); + var { columnWidths, colAlignments } = getColumnWidthsAndAlignments(rows); + const markdownRows = addMarkdownSyntax(rows, columnWidths); + return addAlignmentSyntax(markdownRows, columnWidths, colAlignments).join(LINE_ENDING); +} +function getExcelRows(rawData) { + let data = rawData.trim(); + var intraCellNewlineReplacedData = replaceIntraCellNewline(data); + return splitIntoRowsAndColumns(intraCellNewlineReplacedData); +} +function excelRowsToMarkdown(rows) { + var { columnWidths, colAlignments } = getColumnWidthsAndAlignments(rows); + const markdownRows = addMarkdownSyntax(rows, columnWidths); + return addAlignmentSyntax(markdownRows, columnWidths, colAlignments).join(LINE_ENDING); +} +function isExcelData(rows) { + return rows && rows[0] && rows[0].length > 1 ? true : false; +} + +// src/main.ts +var ExcelToMarkdownTablePlugin = class extends import_obsidian.Plugin { + constructor() { + super(...arguments); + this.pasteHandler = (evt, editor) => { + if (evt.clipboardData === null) { + return; + } + if (evt.clipboardData.types.length === 1 && evt.clipboardData.types[0] === "text/plain") { + return; + } + const rawData = evt.clipboardData.getData("text"); + const rows = getExcelRows(rawData); + if (isExcelData(rows)) { + const markdownData = excelRowsToMarkdown(rows); + editor.replaceSelection(markdownData + "\n"); + evt.preventDefault(); + } + }; + } + onload() { + return __async(this, null, function* () { + this.addCommand({ + id: "excel-to-markdown-table", + name: "Excel to Markdown", + hotkeys: [ + { + modifiers: ["Mod", "Alt"], + key: "v" + } + ], + editorCallback: (editor, view) => __async(this, null, function* () { + const text = yield navigator.clipboard.readText(); + editor.replaceSelection(excelToMarkdown(text)); + }) + }); + this.app.workspace.on("editor-paste", this.pasteHandler); + }); + } + onunload() { + this.app.workspace.off("editor-paste", this.pasteHandler); + } +}; + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-excel-to-markdown-table/manifest.json b/.obsidian/plugins/obsidian-excel-to-markdown-table/manifest.json new file mode 100644 index 0000000..7d3f9dd --- /dev/null +++ b/.obsidian/plugins/obsidian-excel-to-markdown-table/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "obsidian-excel-to-markdown-table", + "name": "Excel to Markdown Table", + "version": "0.4.0", + "minAppVersion": "0.12.0", + "description": "An Obsidian plugin to paste data from Microsoft Excel, Google Sheets, Apple Numbers and LibreOffice Calc as Markdown tables in Obsidian editor.", + "author": "Ganessh Kumar R P ", + "authorUrl": "https://ganesshkumar.com", + "isDesktopOnly": false +} \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-excel-to-markdown-table/styles.css b/.obsidian/plugins/obsidian-excel-to-markdown-table/styles.css new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/.obsidian/plugins/obsidian-excel-to-markdown-table/styles.css @@ -0,0 +1 @@ + diff --git a/.obsidian/plugins/obsidian-mindmap-nextgen/data.json b/.obsidian/plugins/obsidian-mindmap-nextgen/data.json index 41f4552..825ab8e 100644 --- a/.obsidian/plugins/obsidian-mindmap-nextgen/data.json +++ b/.obsidian/plugins/obsidian-mindmap-nextgen/data.json @@ -1,7 +1,6 @@ { "version": "2.0", "layout": [ - null, null, null, null diff --git a/.obsidian/plugins/recent-files-obsidian/data.json b/.obsidian/plugins/recent-files-obsidian/data.json index 52ccde4..81a3fc5 100644 --- a/.obsidian/plugins/recent-files-obsidian/data.json +++ b/.obsidian/plugins/recent-files-obsidian/data.json @@ -1,5 +1,141 @@ { "recentFiles": [ + { + "basename": "PLC IO Tags", + "path": "03-VM/44 - 98050 - Fiera/IO/PLC IO Tags.md" + }, + { + "basename": "Problem with drag&drop or Left Click", + "path": "01-Documentation/Dispositivos - Manuales/Mouse/Problem with drag&drop or Left Click.md" + }, + { + "basename": "Mapping Divider", + "path": "03-VM/44 - 98050 - Fiera/IO/Mapping Divider.md" + }, + { + "basename": "SysInternals Tools - WinInternals", + "path": "01-Documentation/Windows/SysInternals Tools - WinInternals.md" + }, + { + "basename": "Device IO Tags", + "path": "03-VM/44 - 98050 - Fiera/IO/Device IO Tags.md" + }, + { + "basename": "AI Prompts useful", + "path": "01-Documentation/AI - IA - LLM - Artificial Intelligence/AI Prompts useful.md" + }, + { + "basename": "Layout - Anello-Ring", + "path": "03-VM/44 - 98050 - Fiera/Layout - Anello-Ring.md" + }, + { + "basename": "IO - Ips Nodes", + "path": "03-VM/44 - 98050 - Fiera/IO - Ips Nodes.md" + }, + { + "basename": "DAR Description - DIET AS REGULAR - SAE452 San Giorgio in Bosco", + "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/DAR Description - DIET AS REGULAR - SAE452 San Giorgio in Bosco.md" + }, + { + "basename": "98050_Hardware", + "path": "03-VM/44 - 98050 - Fiera/98050_Hardware.md" + }, + { + "basename": "Conda - Anaconda - miniconda", + "path": "01-Documentation/Python/Scripts Python/Conda - Anaconda - miniconda.md" + }, + { + "basename": "Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.1 - Esp", + "path": "03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.1 - Esp.md" + }, + { + "basename": "Calc v0.3 Pure", + "path": "01-Documentation/Python/Scripts Python/Calc/Calc v0.3 Pure.md" + }, + { + "basename": "Calc v0.2", + "path": "01-Documentation/Python/Scripts Python/Calc/Calc v0.2.md" + }, + { + "basename": "Calc v0.1", + "path": "01-Documentation/Python/Scripts Python/Calc/Calc v0.1.md" + }, + { + "basename": "Miniconda Como hacer un backup completo de un entorno creado con Miniconda", + "path": "01-Documentation/Python/Scripts Python/Miniconda Como hacer un backup completo de un entorno creado con Miniconda.md" + }, + { + "basename": "Group Scripts Manager", + "path": "01-Documentation/Python/Scripts Python/Group Scripts Manager.md" + }, + { + "basename": "Notes - Update Multilane Table", + "path": "03-VM/41 - 94154 - Update Multilane Table/Notes - Update Multilane Table.md" + }, + { + "basename": "Backups - Mikrotik", + "path": "01-Documentation/Routers/Mikrotik - Network Redes/Backups - Mikrotik.md" + }, + { + "basename": "Mikrotik - Comandos WIFI - Clientes de wlan y CAP", + "path": "01-Documentation/Routers/Mikrotik - Network Redes/Mikrotik - Comandos WIFI - Clientes de wlan y CAP.md" + }, + { + "basename": "Mikrotik - Setup Commands for Layer 2 Wi-Fi Bridge", + "path": "01-Documentation/Routers/Mikrotik - Network Redes/Mikrotik - Setup Commands for Layer 2 Wi-Fi Bridge.md" + }, + { + "basename": "Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.0 - Ita", + "path": "03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.0 - Ita.md" + }, + { + "basename": "Drawing 2025-02-24 19.56.40.excalidraw", + "path": "03-VM/41 - 94154 - Update Multilane Table/Drawing 2025-02-24 19.56.40.excalidraw.md" + }, + { + "basename": "Drawing 2025-02-25 18.12.26.excalidraw", + "path": "03-VM/41 - 94154 - Update Multilane Table/Drawing 2025-02-25 18.12.26.excalidraw.md" + }, + { + "basename": "IPs & Address - Master - Vetromeccanica", + "path": "03-VM/9..... MASTER Transport/Standard Transport/IPs & Address - Master - Vetromeccanica.md" + }, + { + "basename": "Autocad - useful Commands", + "path": "01-Documentation/Autocad - Acad/Autocad - useful Commands.md" + }, + { + "basename": "Autocad - Acad - show all layers - unlock all layers", + "path": "01-Documentation/Autocad - Acad/Autocad - Acad - show all layers - unlock all layers.md" + }, + { + "basename": "Minimotor - Setup - Chingiolli - FC6", + "path": "01-Documentation/Vetromeccanica/Minimotor - FC6/Minimotor - Setup - Chingiolli - FC6.md" + }, + { + "basename": "Minimotor - Encoder setup", + "path": "01-Documentation/Vetromeccanica/Minimotor - FC6/Minimotor - Encoder setup.md" + }, + { + "basename": "Drawing 2024-04-03 11.29.20.excalidraw", + "path": "01-Documentation/Vetromeccanica/Minimotor - FC6/Drawing 2024-04-03 11.29.20.excalidraw.md" + }, + { + "basename": "Siemens HMI Translate - Python - LLM - Google Translate", + "path": "01-Documentation/Python/Scripts Python/Siemens HMI Translate - Python - LLM - Google Translate.md" + }, + { + "basename": "MR-J4", + "path": "01-Documentation/Inverters/Mitsubishi/MR-J4.md" + }, + { + "basename": "Test - Fatto su Maselli - 06-05-2025", + "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Documentation/Test - Fatto su Maselli - 06-05-2025.md" + }, + { + "basename": "Hardware used for 485-TCP", + "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Hardware used for 485-TCP.md" + }, { "basename": "FB2120 - MasseliTCP Read - v1.8", "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/FB2120 - MasseliTCP Read - v1.8.md" @@ -8,10 +144,6 @@ "basename": "FB2120 - MasseliTCP Read - Descrizzione Software - v1.8", "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/FB2120 - MasseliTCP Read - Descrizzione Software - v1.8.md" }, - { - "basename": "Hardware used for 485-TCP", - "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Hardware used for 485-TCP.md" - }, { "basename": "Versiones", "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Versiones.md" @@ -24,10 +156,6 @@ "basename": "Maselli - ADAM - Protocol", "path": "01-Documentation/Dispositivos - Manuales/Maselli/Maselli - ADAM - Protocol.md" }, - { - "basename": "Progetto 98050 Fiera - Tavolo di accumulo", - "path": "03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo.md" - }, { "basename": "Install Docker on Ubuntu", "path": "01-Documentation/Dockers/Install Docker on Ubuntu.md" @@ -56,14 +184,6 @@ "basename": "Waveshare RS232-485 Ethernet - Wifi - ADAM 4021 - Using Serial200", "path": "01-Documentation/Dispositivos - Manuales/Waveshare RS232-485 Ethernet - Wifi/Waveshare RS232-485 Ethernet - Wifi - ADAM 4021 - Using Serial200.md" }, - { - "basename": "DAR Description - DIET AS REGULAR - SAE452 San Giorgio in Bosco", - "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/DAR Description - DIET AS REGULAR - SAE452 San Giorgio in Bosco.md" - }, - { - "basename": "Test - Fatto su Maselli - 06-05-2025", - "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Documentation/Test - Fatto su Maselli - 06-05-2025.md" - }, { "basename": "GIT commands HELP", "path": "01-Documentation/GIT - GitHub/GIT commands HELP.md" @@ -79,118 +199,6 @@ { "basename": "GitHub Privacy", "path": "01-Documentation/GIT - GitHub/GitHub Privacy.md" - }, - { - "basename": "Visit to Maselli 06-05-2025", - "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Documentation/Visit to Maselli 06-05-2025.md" - }, - { - "basename": "Waveshare RS232-485 Ethernet - Wifi - ADAM 4021 - Using com0com - MaselliSimulatorApp Python", - "path": "01-Documentation/Dispositivos - Manuales/Waveshare RS232-485 Ethernet - Wifi/Waveshare RS232-485 Ethernet - Wifi - ADAM 4021 - Using com0com - MaselliSimulatorApp Python.md" - }, - { - "basename": "CableMAX - Converter 485 - Serial Adaptor RS232 - CM-RSDB9-PRO", - "path": "01-Documentation/Dispositivos - Manuales/CableMAX - Converter 485 - Serial Adaptor RS232 - CM-RSDB9-PRO.md" - }, - { - "basename": "ADAM 4021 - 485 to 4..20ma - Commissioning & Firmware update", - "path": "01-Documentation/Dispositivos - Manuales/ADAM/ADAM 4021 - 485 to 4..20ma - Commissioning & Firmware update.md" - }, - { - "basename": "Maselli Sensor to Siemens PLC Communication Implementation", - "path": "01-Documentation/Dispositivos - Manuales/ADAM/Maselli Sensor to Siemens PLC Communication Implementation.md" - }, - { - "basename": "Masselli (UR62 & UR29)", - "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Masselli (UR62 & UR29).md" - }, - { - "basename": "ADAM -", - "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/ADAM -.md" - }, - { - "basename": "Untitled", - "path": "04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Untitled.md" - }, - { - "basename": "Communication TSEND_C - TRCV_C", - "path": "01-Documentation/Siemens/PLC Siemens/Communication TSEND_C - TRCV_C.md" - }, - { - "basename": "Maselli Proprietary Serial-Socket Protocol", - "path": "01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Maselli Proprietary Serial-Socket Protocol.md" - }, - { - "basename": "Maselli - Protocol - Gateway - 485 - Ethernet", - "path": "01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Protocol - Gateway - 485 - Ethernet.md" - }, - { - "basename": "Untitled", - "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Untitled.md" - }, - { - "basename": "com0com Setup Only version 2.2 - version 3 NOT WORKING with Windows 11", - "path": "01-Documentation/Dispositivos - Manuales/COM - Virtual COM com0com/com0com Setup Only version 2.2 - version 3 NOT WORKING with Windows 11.md" - }, - { - "basename": "LAD Descriptions from XDA files from Tia Portal", - "path": "01-Documentation/Python/Scripts Python/XML to SCL Siemens/LAD Descriptions from XDA files from Tia Portal.md" - }, - { - "basename": "AI Prompts useful", - "path": "01-Documentation/AI - IA - LLM - Artificial Intelligence/AI Prompts useful.md" - }, - { - "basename": "Guía de Exportación a Formato SIMATIC SD con TIA Portal Openness y Csharp", - "path": "01-Documentation/Siemens/Openness/Guía de Exportación a Formato SIMATIC SD con TIA Portal Openness y Csharp.md" - }, - { - "basename": "Projects Description", - "path": "04-SIDEL/Projects Description.md" - }, - { - "basename": "SAE346 - HMI - Machine Configuration", - "path": "04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/SAE346 - HMI - Machine Configuration.md" - }, - { - "basename": "Comm - Mixer - Filler", - "path": "04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/COMM - FILLER - MIXER/Comm - Mixer - Filler.md" - }, - { - "basename": "SAE346 - Software adaptation from Master - Notes", - "path": "04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/SAE346 - Software adaptation from Master - Notes.md" - }, - { - "basename": "SAE346 P&ID", - "path": "04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/SAE346 P&ID.md" - }, - { - "basename": "SAE346 - Signals - CIP - Filler - Syrop", - "path": "04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/SAE346 - Signals - CIP - Filler - Syrop.md" - }, - { - "basename": "SAE346 - Process diagram", - "path": "04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/SAE346 - Process diagram.md" - }, - { - "basename": "SAE346 - Master adaptation to compile", - "path": "04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/SAE346 - Master adaptation to compile.md" - }, - { - "basename": "SAE346 - IO from Electrical Diagram", - "path": "04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/SAE346 - IO from Electrical Diagram.md" - }, - { - "basename": "Openness Python Library - siemens_tia_scripting", - "path": "01-Documentation/Siemens/Openness/Openness Python Library - siemens_tia_scripting.md" - }, - { - "basename": "Untitled", - "path": "04-SIDEL/13 - E5.007560 - Modifica O&U - SAE235/Untitled.md" - }, - { - "basename": "Notas para crear nuevas aplicaciones", - "path": "07 - Desarrolo de Proyectos - Scripts - Visual Studio/Proyectos Visual Studio/Notas para crear nuevas aplicaciones.md" } ], "omittedPaths": [], diff --git a/.obsidian/plugins/solve/main.js b/.obsidian/plugins/solve/main.js new file mode 100644 index 0000000..6021d0a --- /dev/null +++ b/.obsidian/plugins/solve/main.js @@ -0,0 +1,1763 @@ +var Bh=Object.create;var rn=Object.defineProperty;var Yh=Object.getOwnPropertyDescriptor;var Gh=Object.getOwnPropertyNames;var Hh=Object.getPrototypeOf,Wh=Object.prototype.hasOwnProperty;var E=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports),zh=(i,e)=>{for(var t in e)rn(i,t,{get:e[t],enumerable:!0})},ka=(i,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of Gh(e))!Wh.call(i,a)&&a!==t&&rn(i,a,{get:()=>e[a],enumerable:!(n=Yh(e,a))||n.enumerable});return i};var me=(i,e,t)=>(t=i!=null?Bh(Hh(i)):{},ka(e||!i||!i.__esModule?rn(t,"default",{value:i,enumerable:!0}):t,i)),jh=i=>ka(rn({},"__esModule",{value:!0}),i);var br=E((Gs,Zt)=>{(function(i,e){typeof Gs=="object"&&typeof Zt!="undefined"?Zt.exports=e():typeof define=="function"&&define.amd?define(e):i.moment=e()})(Gs,function(){"use strict";var i;function e(){return i.apply(null,arguments)}function t(r){i=r}function n(r){return r instanceof Array||Object.prototype.toString.call(r)==="[object Array]"}function a(r){return r!=null&&Object.prototype.toString.call(r)==="[object Object]"}function l(r,s){return Object.prototype.hasOwnProperty.call(r,s)}function c(r){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(r).length===0;var s;for(s in r)if(l(r,s))return!1;return!0}function v(r){return r===void 0}function h(r){return typeof r=="number"||Object.prototype.toString.call(r)==="[object Number]"}function d(r){return r instanceof Date||Object.prototype.toString.call(r)==="[object Date]"}function g(r,s){var o=[],u,p=r.length;for(u=0;u>>0,u;for(u=0;u0)for(o=0;o=0;return(m?o?"+":"":"-")+Math.pow(10,Math.max(0,p)).toString().substr(1)+u}var gs=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Vr=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,ys={},Yt={};function P(r,s,o,u){var p=u;typeof u=="string"&&(p=function(){return this[u]()}),r&&(Yt[r]=p),s&&(Yt[s[0]]=function(){return nt(p.apply(this,arguments),s[1],s[2])}),o&&(Yt[o]=function(){return this.localeData().ordinal(p.apply(this,arguments),r)})}function zc(r){return r.match(/\[[\s\S]/)?r.replace(/^\[|\]$/g,""):r.replace(/\\/g,"")}function jc(r){var s=r.match(gs),o,u;for(o=0,u=s.length;o=0&&Vr.test(r);)r=r.replace(Vr,u),Vr.lastIndex=0,o-=1;return r}var $c={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function Kc(r){var s=this._longDateFormat[r],o=this._longDateFormat[r.toUpperCase()];return s||!o?s:(this._longDateFormat[r]=o.match(gs).map(function(u){return u==="MMMM"||u==="MM"||u==="DD"||u==="dddd"?u.slice(1):u}).join(""),this._longDateFormat[r])}var Zc="Invalid date";function Jc(){return this._invalidDate}var Qc="%d",Xc=/\d{1,2}/;function ep(r){return this._ordinal.replace("%d",r)}var tp={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function rp(r,s,o,u){var p=this._relativeTime[o];return rt(p)?p(r,s,o,u):p.replace(/%d/i,r)}function np(r,s){var o=this._relativeTime[r>0?"future":"past"];return rt(o)?o(s):o.replace(/%s/i,s)}var mr={};function xe(r,s){var o=r.toLowerCase();mr[o]=mr[o+"s"]=mr[s]=r}function Fe(r){return typeof r=="string"?mr[r]||mr[r.toLowerCase()]:void 0}function _s(r){var s={},o,u;for(u in r)l(r,u)&&(o=Fe(u),o&&(s[o]=r[u]));return s}var ji={};function be(r,s){ji[r]=s}function sp(r){var s=[],o;for(o in r)l(r,o)&&s.push({unit:o,priority:ji[o]});return s.sort(function(u,p){return u.priority-p.priority}),s}function kr(r){return r%4===0&&r%100!==0||r%400===0}function qe(r){return r<0?Math.ceil(r)||0:Math.floor(r)}function B(r){var s=+r,o=0;return s!==0&&isFinite(s)&&(o=qe(s)),o}function Gt(r,s){return function(o){return o!=null?($i(this,r,o),e.updateOffset(this,s),this):Cr(this,r)}}function Cr(r,s){return r.isValid()?r._d["get"+(r._isUTC?"UTC":"")+s]():NaN}function $i(r,s,o){r.isValid()&&!isNaN(o)&&(s==="FullYear"&&kr(r.year())&&r.month()===1&&r.date()===29?(o=B(o),r._d["set"+(r._isUTC?"UTC":"")+s](o,r.month(),Hr(o,r.month()))):r._d["set"+(r._isUTC?"UTC":"")+s](o))}function ip(r){return r=Fe(r),rt(this[r])?this[r]():this}function ap(r,s){if(typeof r=="object"){r=_s(r);var o=sp(r),u,p=o.length;for(u=0;u68?1900:2e3)};var sa=Gt("FullYear",!0);function Rp(){return kr(this.year())}function Dp(r,s,o,u,p,m,I){var M;return r<100&&r>=0?(M=new Date(r+400,s,o,u,p,m,I),isFinite(M.getFullYear())&&M.setFullYear(r)):M=new Date(r,s,o,u,p,m,I),M}function fr(r){var s,o;return r<100&&r>=0?(o=Array.prototype.slice.call(arguments),o[0]=r+400,s=new Date(Date.UTC.apply(null,o)),isFinite(s.getUTCFullYear())&&s.setUTCFullYear(r)):s=new Date(Date.UTC.apply(null,arguments)),s}function Wr(r,s,o){var u=7+s-o,p=(7+fr(r,0,u).getUTCDay()-s)%7;return-p+u-1}function ia(r,s,o,u,p){var m=(7+o-u)%7,I=Wr(r,u,p),M=1+7*(s-1)+m+I,q,$;return M<=0?(q=r-1,$=dr(q)+M):M>dr(r)?(q=r+1,$=M-dr(r)):(q=r,$=M),{year:q,dayOfYear:$}}function Ir(r,s,o){var u=Wr(r.year(),s,o),p=Math.floor((r.dayOfYear()-u-1)/7)+1,m,I;return p<1?(I=r.year()-1,m=p+pt(I,s,o)):p>pt(r.year(),s,o)?(m=p-pt(r.year(),s,o),I=r.year()+1):(I=r.year(),m=p),{week:m,year:I}}function pt(r,s,o){var u=Wr(r,s,o),p=Wr(r+1,s,o);return(dr(r)-u+p)/7}P("w",["ww",2],"wo","week"),P("W",["WW",2],"Wo","isoWeek"),xe("week","w"),xe("isoWeek","W"),be("week",5),be("isoWeek",5),w("w",Z),w("ww",Z,ke),w("W",Z),w("WW",Z,ke),hr(["w","ww","W","WW"],function(r,s,o,u){s[u.substr(0,1)]=B(r)});function Pp(r){return Ir(r,this._week.dow,this._week.doy).week}var Mp={dow:0,doy:6};function Ep(){return this._week.dow}function Ap(){return this._week.doy}function Op(r){var s=this.localeData().week(this);return r==null?s:this.add((r-s)*7,"d")}function Np(r){var s=Ir(this,1,4).week;return r==null?s:this.add((r-s)*7,"d")}P("d",0,"do","day"),P("dd",0,0,function(r){return this.localeData().weekdaysMin(this,r)}),P("ddd",0,0,function(r){return this.localeData().weekdaysShort(this,r)}),P("dddd",0,0,function(r){return this.localeData().weekdays(this,r)}),P("e",0,0,"weekday"),P("E",0,0,"isoWeekday"),xe("day","d"),xe("weekday","e"),xe("isoWeekday","E"),be("day",11),be("weekday",11),be("isoWeekday",11),w("d",Z),w("e",Z),w("E",Z),w("dd",function(r,s){return s.weekdaysMinRegex(r)}),w("ddd",function(r,s){return s.weekdaysShortRegex(r)}),w("dddd",function(r,s){return s.weekdaysRegex(r)}),hr(["dd","ddd","dddd"],function(r,s,o,u){var p=o._locale.weekdaysParse(r,u,o._strict);p!=null?s.d=p:_(o).invalidWeekday=r}),hr(["d","e","E"],function(r,s,o,u){s[u]=B(r)});function Tp(r,s){return typeof r!="string"?r:isNaN(r)?(r=s.weekdaysParse(r),typeof r=="number"?r:null):parseInt(r,10)}function Vp(r,s){return typeof r=="string"?s.weekdaysParse(r)%7||7:isNaN(r)?null:r}function ws(r,s){return r.slice(s,7).concat(r.slice(0,s))}var Lp="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),aa="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),kp="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Cp=vr,Fp=vr,qp=vr;function Up(r,s){var o=n(this._weekdays)?this._weekdays:this._weekdays[r&&r!==!0&&this._weekdays.isFormat.test(s)?"format":"standalone"];return r===!0?ws(o,this._week.dow):r?o[r.day()]:o}function Bp(r){return r===!0?ws(this._weekdaysShort,this._week.dow):r?this._weekdaysShort[r.day()]:this._weekdaysShort}function Yp(r){return r===!0?ws(this._weekdaysMin,this._week.dow):r?this._weekdaysMin[r.day()]:this._weekdaysMin}function Gp(r,s,o){var u,p,m,I=r.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],u=0;u<7;++u)m=y([2e3,1]).day(u),this._minWeekdaysParse[u]=this.weekdaysMin(m,"").toLocaleLowerCase(),this._shortWeekdaysParse[u]=this.weekdaysShort(m,"").toLocaleLowerCase(),this._weekdaysParse[u]=this.weekdays(m,"").toLocaleLowerCase();return o?s==="dddd"?(p=se.call(this._weekdaysParse,I),p!==-1?p:null):s==="ddd"?(p=se.call(this._shortWeekdaysParse,I),p!==-1?p:null):(p=se.call(this._minWeekdaysParse,I),p!==-1?p:null):s==="dddd"?(p=se.call(this._weekdaysParse,I),p!==-1||(p=se.call(this._shortWeekdaysParse,I),p!==-1)?p:(p=se.call(this._minWeekdaysParse,I),p!==-1?p:null)):s==="ddd"?(p=se.call(this._shortWeekdaysParse,I),p!==-1||(p=se.call(this._weekdaysParse,I),p!==-1)?p:(p=se.call(this._minWeekdaysParse,I),p!==-1?p:null)):(p=se.call(this._minWeekdaysParse,I),p!==-1||(p=se.call(this._weekdaysParse,I),p!==-1)?p:(p=se.call(this._shortWeekdaysParse,I),p!==-1?p:null))}function Hp(r,s,o){var u,p,m;if(this._weekdaysParseExact)return Gp.call(this,r,s,o);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),u=0;u<7;u++){if(p=y([2e3,1]).day(u),o&&!this._fullWeekdaysParse[u]&&(this._fullWeekdaysParse[u]=new RegExp("^"+this.weekdays(p,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[u]=new RegExp("^"+this.weekdaysShort(p,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[u]=new RegExp("^"+this.weekdaysMin(p,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[u]||(m="^"+this.weekdays(p,"")+"|^"+this.weekdaysShort(p,"")+"|^"+this.weekdaysMin(p,""),this._weekdaysParse[u]=new RegExp(m.replace(".",""),"i")),o&&s==="dddd"&&this._fullWeekdaysParse[u].test(r))return u;if(o&&s==="ddd"&&this._shortWeekdaysParse[u].test(r))return u;if(o&&s==="dd"&&this._minWeekdaysParse[u].test(r))return u;if(!o&&this._weekdaysParse[u].test(r))return u}}function Wp(r){if(!this.isValid())return r!=null?this:NaN;var s=this._isUTC?this._d.getUTCDay():this._d.getDay();return r!=null?(r=Tp(r,this.localeData()),this.add(r-s,"d")):s}function zp(r){if(!this.isValid())return r!=null?this:NaN;var s=(this.day()+7-this.localeData()._week.dow)%7;return r==null?s:this.add(r-s,"d")}function jp(r){if(!this.isValid())return r!=null?this:NaN;if(r!=null){var s=Vp(r,this.localeData());return this.day(this.day()%7?s:s-7)}else return this.day()||7}function $p(r){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||Rs.call(this),r?this._weekdaysStrictRegex:this._weekdaysRegex):(l(this,"_weekdaysRegex")||(this._weekdaysRegex=Cp),this._weekdaysStrictRegex&&r?this._weekdaysStrictRegex:this._weekdaysRegex)}function Kp(r){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||Rs.call(this),r?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(l(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Fp),this._weekdaysShortStrictRegex&&r?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Zp(r){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||Rs.call(this),r?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(l(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=qp),this._weekdaysMinStrictRegex&&r?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Rs(){function r(De,ft){return ft.length-De.length}var s=[],o=[],u=[],p=[],m,I,M,q,$;for(m=0;m<7;m++)I=y([2e3,1]).day(m),M=Ce(this.weekdaysMin(I,"")),q=Ce(this.weekdaysShort(I,"")),$=Ce(this.weekdays(I,"")),s.push(M),o.push(q),u.push($),p.push(M),p.push(q),p.push($);s.sort(r),o.sort(r),u.sort(r),p.sort(r),this._weekdaysRegex=new RegExp("^("+p.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+s.join("|")+")","i")}function Ds(){return this.hours()%12||12}function Jp(){return this.hours()||24}P("H",["HH",2],0,"hour"),P("h",["hh",2],0,Ds),P("k",["kk",2],0,Jp),P("hmm",0,0,function(){return""+Ds.apply(this)+nt(this.minutes(),2)}),P("hmmss",0,0,function(){return""+Ds.apply(this)+nt(this.minutes(),2)+nt(this.seconds(),2)}),P("Hmm",0,0,function(){return""+this.hours()+nt(this.minutes(),2)}),P("Hmmss",0,0,function(){return""+this.hours()+nt(this.minutes(),2)+nt(this.seconds(),2)});function oa(r,s){P(r,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),s)})}oa("a",!0),oa("A",!1),xe("hour","h"),be("hour",13);function la(r,s){return s._meridiemParse}w("a",la),w("A",la),w("H",Z),w("h",Z),w("k",Z),w("HH",Z,ke),w("hh",Z,ke),w("kk",Z,ke),w("hmm",Ji),w("hmmss",Qi),w("Hmm",Ji),w("Hmmss",Qi),j(["H","HH"],ue),j(["k","kk"],function(r,s,o){var u=B(r);s[ue]=u===24?0:u}),j(["a","A"],function(r,s,o){o._isPm=o._locale.isPM(r),o._meridiem=r}),j(["h","hh"],function(r,s,o){s[ue]=B(r),_(o).bigHour=!0}),j("hmm",function(r,s,o){var u=r.length-2;s[ue]=B(r.substr(0,u)),s[$e]=B(r.substr(u)),_(o).bigHour=!0}),j("hmmss",function(r,s,o){var u=r.length-4,p=r.length-2;s[ue]=B(r.substr(0,u)),s[$e]=B(r.substr(u,2)),s[ct]=B(r.substr(p)),_(o).bigHour=!0}),j("Hmm",function(r,s,o){var u=r.length-2;s[ue]=B(r.substr(0,u)),s[$e]=B(r.substr(u))}),j("Hmmss",function(r,s,o){var u=r.length-4,p=r.length-2;s[ue]=B(r.substr(0,u)),s[$e]=B(r.substr(u,2)),s[ct]=B(r.substr(p))});function Qp(r){return(r+"").toLowerCase().charAt(0)==="p"}var Xp=/[ap]\.?m?\.?/i,em=Gt("Hours",!0);function tm(r,s,o){return r>11?o?"pm":"PM":o?"am":"AM"}var ua={calendar:Hc,longDateFormat:$c,invalidDate:Zc,ordinal:Qc,dayOfMonthOrdinalParse:Xc,relativeTime:tp,months:dp,monthsShort:Xi,week:Mp,weekdays:Lp,weekdaysMin:kp,weekdaysShort:aa,meridiemParse:Xp},Q={},gr={},yr;function rm(r,s){var o,u=Math.min(r.length,s.length);for(o=0;o0;){if(p=zr(m.slice(0,o).join("-")),p)return p;if(u&&u.length>=o&&rm(m,u)>=o-1)break;o--}s++}return yr}function sm(r){return r.match("^[^/\\\\]*$")!=null}function zr(r){var s=null,o;if(Q[r]===void 0&&typeof Zt!="undefined"&&Zt&&Zt.exports&&sm(r))try{s=yr._abbr,o=require,o("./locale/"+r),St(s)}catch(u){Q[r]=null}return Q[r]}function St(r,s){var o;return r&&(v(s)?o=mt(r):o=Ps(r,s),o&&(yr=o)),yr._abbr}function Ps(r,s){if(s!==null){var o,u=ua;if(s.abbr=r,Q[r]!=null)Wi("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),u=Q[r]._config;else if(s.parentLocale!=null)if(Q[s.parentLocale]!=null)u=Q[s.parentLocale]._config;else if(o=zr(s.parentLocale),o!=null)u=o._config;else return gr[s.parentLocale]||(gr[s.parentLocale]=[]),gr[s.parentLocale].push({name:r,config:s}),null;return Q[r]=new fs(ds(u,s)),gr[r]&&gr[r].forEach(function(p){Ps(p.name,p.config)}),St(r),Q[r]}else return delete Q[r],null}function im(r,s){if(s!=null){var o,u,p=ua;Q[r]!=null&&Q[r].parentLocale!=null?Q[r].set(ds(Q[r]._config,s)):(u=zr(r),u!=null&&(p=u._config),s=ds(p,s),u==null&&(s.abbr=r),o=new fs(s),o.parentLocale=Q[r],Q[r]=o),St(r)}else Q[r]!=null&&(Q[r].parentLocale!=null?(Q[r]=Q[r].parentLocale,r===St()&&St(r)):Q[r]!=null&&delete Q[r]);return Q[r]}function mt(r){var s;if(r&&r._locale&&r._locale._abbr&&(r=r._locale._abbr),!r)return yr;if(!n(r)){if(s=zr(r),s)return s;r=[r]}return nm(r)}function am(){return Is(Q)}function Ms(r){var s,o=r._a;return o&&_(r).overflow===-2&&(s=o[ut]<0||o[ut]>11?ut:o[st]<1||o[st]>Hr(o[we],o[ut])?st:o[ue]<0||o[ue]>24||o[ue]===24&&(o[$e]!==0||o[ct]!==0||o[Ot]!==0)?ue:o[$e]<0||o[$e]>59?$e:o[ct]<0||o[ct]>59?ct:o[Ot]<0||o[Ot]>999?Ot:-1,_(r)._overflowDayOfYear&&(sst)&&(s=st),_(r)._overflowWeeks&&s===-1&&(s=mp),_(r)._overflowWeekday&&s===-1&&(s=vp),_(r).overflow=s),r}var om=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,lm=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,um=/Z|[+-]\d\d(?::?\d\d)?/,jr=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],Es=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],cm=/^\/?Date\((-?\d+)/i,pm=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,mm={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function pa(r){var s,o,u=r._i,p=om.exec(u)||lm.exec(u),m,I,M,q,$=jr.length,De=Es.length;if(p){for(_(r).iso=!0,s=0,o=$;sdr(I)||r._dayOfYear===0)&&(_(r)._overflowDayOfYear=!0),o=fr(I,0,r._dayOfYear),r._a[ut]=o.getUTCMonth(),r._a[st]=o.getUTCDate()),s=0;s<3&&r._a[s]==null;++s)r._a[s]=u[s]=p[s];for(;s<7;s++)r._a[s]=u[s]=r._a[s]==null?s===2?1:0:r._a[s];r._a[ue]===24&&r._a[$e]===0&&r._a[ct]===0&&r._a[Ot]===0&&(r._nextDay=!0,r._a[ue]=0),r._d=(r._useUTC?fr:Dp).apply(null,u),m=r._useUTC?r._d.getUTCDay():r._d.getDay(),r._tzm!=null&&r._d.setUTCMinutes(r._d.getUTCMinutes()-r._tzm),r._nextDay&&(r._a[ue]=24),r._w&&typeof r._w.d!="undefined"&&r._w.d!==m&&(_(r).weekdayMismatch=!0)}}function _m(r){var s,o,u,p,m,I,M,q,$;s=r._w,s.GG!=null||s.W!=null||s.E!=null?(m=1,I=4,o=Wt(s.GG,r._a[we],Ir(J(),1,4).year),u=Wt(s.W,1),p=Wt(s.E,1),(p<1||p>7)&&(q=!0)):(m=r._locale._week.dow,I=r._locale._week.doy,$=Ir(J(),m,I),o=Wt(s.gg,r._a[we],$.year),u=Wt(s.w,$.week),s.d!=null?(p=s.d,(p<0||p>6)&&(q=!0)):s.e!=null?(p=s.e+m,(s.e<0||s.e>6)&&(q=!0)):p=m),u<1||u>pt(o,m,I)?_(r)._overflowWeeks=!0:q!=null?_(r)._overflowWeekday=!0:(M=ia(o,u,p,m,I),r._a[we]=M.year,r._dayOfYear=M.dayOfYear)}e.ISO_8601=function(){},e.RFC_2822=function(){};function Os(r){if(r._f===e.ISO_8601){pa(r);return}if(r._f===e.RFC_2822){ma(r);return}r._a=[],_(r).empty=!0;var s=""+r._i,o,u,p,m,I,M=s.length,q=0,$,De;for(p=zi(r._f,r._locale).match(gs)||[],De=p.length,o=0;o0&&_(r).unusedInput.push(I),s=s.slice(s.indexOf(u)+u.length),q+=u.length),Yt[m]?(u?_(r).empty=!1:_(r).unusedTokens.push(m),pp(m,u,r)):r._strict&&!u&&_(r).unusedTokens.push(m);_(r).charsLeftOver=M-q,s.length>0&&_(r).unusedInput.push(s),r._a[ue]<=12&&_(r).bigHour===!0&&r._a[ue]>0&&(_(r).bigHour=void 0),_(r).parsedDateParts=r._a.slice(0),_(r).meridiem=r._meridiem,r._a[ue]=Sm(r._locale,r._a[ue],r._meridiem),$=_(r).era,$!==null&&(r._a[we]=r._locale.erasConvertYear($,r._a[we])),As(r),Ms(r)}function Sm(r,s,o){var u;return o==null?s:r.meridiemHour!=null?r.meridiemHour(s,o):(r.isPM!=null&&(u=r.isPM(o),u&&s<12&&(s+=12),!u&&s===12&&(s=0)),s)}function xm(r){var s,o,u,p,m,I,M=!1,q=r._f.length;if(q===0){_(r).invalidFormat=!0,r._d=new Date(NaN);return}for(p=0;pthis?this:r:ee()});function da(r,s){var o,u;if(s.length===1&&n(s[0])&&(s=s[0]),!s.length)return J();for(o=s[0],u=1;uthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Gm(){if(!v(this._isDSTShifted))return this._isDSTShifted;var r={},s;return je(r,this),r=va(r),r._a?(s=r._isUTC?y(r._a):J(r._a),this._isDSTShifted=this.isValid()&&Vm(r._a,s.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function Hm(){return this.isValid()?!this._isUTC:!1}function Wm(){return this.isValid()?this._isUTC:!1}function Ia(){return this.isValid()?this._isUTC&&this._offset===0:!1}var zm=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,jm=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Ke(r,s){var o=r,u=null,p,m,I;return Kr(r)?o={ms:r._milliseconds,d:r._days,M:r._months}:h(r)||!isNaN(+r)?(o={},s?o[s]=+r:o.milliseconds=+r):(u=zm.exec(r))?(p=u[1]==="-"?-1:1,o={y:0,d:B(u[st])*p,h:B(u[ue])*p,m:B(u[$e])*p,s:B(u[ct])*p,ms:B(Ns(u[Ot]*1e3))*p}):(u=jm.exec(r))?(p=u[1]==="-"?-1:1,o={y:Nt(u[2],p),M:Nt(u[3],p),w:Nt(u[4],p),d:Nt(u[5],p),h:Nt(u[6],p),m:Nt(u[7],p),s:Nt(u[8],p)}):o==null?o={}:typeof o=="object"&&("from"in o||"to"in o)&&(I=$m(J(o.from),J(o.to)),o={},o.ms=I.milliseconds,o.M=I.months),m=new $r(o),Kr(r)&&l(r,"_locale")&&(m._locale=r._locale),Kr(r)&&l(r,"_isValid")&&(m._isValid=r._isValid),m}Ke.fn=$r.prototype,Ke.invalid=Tm;function Nt(r,s){var o=r&&parseFloat(r.replace(",","."));return(isNaN(o)?0:o)*s}function ga(r,s){var o={};return o.months=s.month()-r.month()+(s.year()-r.year())*12,r.clone().add(o.months,"M").isAfter(s)&&--o.months,o.milliseconds=+s-+r.clone().add(o.months,"M"),o}function $m(r,s){var o;return r.isValid()&&s.isValid()?(s=Vs(s,r),r.isBefore(s)?o=ga(r,s):(o=ga(s,r),o.milliseconds=-o.milliseconds,o.months=-o.months),o):{milliseconds:0,months:0}}function ya(r,s){return function(o,u){var p,m;return u!==null&&!isNaN(+u)&&(Wi(s,"moment()."+s+"(period, number) is deprecated. Please use moment()."+s+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),m=o,o=u,u=m),p=Ke(o,u),_a(this,p,r),this}}function _a(r,s,o,u){var p=s._milliseconds,m=Ns(s._days),I=Ns(s._months);r.isValid()&&(u=u==null?!0:u,I&&ta(r,Cr(r,"Month")+I*o),m&&$i(r,"Date",Cr(r,"Date")+m*o),p&&r._d.setTime(r._d.valueOf()+p*o),u&&e.updateOffset(r,m||I))}var Km=ya(1,"add"),Zm=ya(-1,"subtract");function Sa(r){return typeof r=="string"||r instanceof String}function Jm(r){return _e(r)||d(r)||Sa(r)||h(r)||Xm(r)||Qm(r)||r===null||r===void 0}function Qm(r){var s=a(r)&&!c(r),o=!1,u=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],p,m,I=u.length;for(p=0;po.valueOf():o.valueOf()9999?Lr(o,s?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):rt(Date.prototype.toISOString)?s?this.toDate().toISOString():new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",Lr(o,"Z")):Lr(o,s?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function vv(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var r="moment",s="",o,u,p,m;return this.isLocal()||(r=this.utcOffset()===0?"moment.utc":"moment.parseZone",s="Z"),o="["+r+'("]',u=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",p="-MM-DD[T]HH:mm:ss.SSS",m=s+'[")]',this.format(o+u+p+m)}function hv(r){r||(r=this.isUtc()?e.defaultFormatUtc:e.defaultFormat);var s=Lr(this,r);return this.localeData().postformat(s)}function dv(r,s){return this.isValid()&&(_e(r)&&r.isValid()||J(r).isValid())?Ke({to:this,from:r}).locale(this.locale()).humanize(!s):this.localeData().invalidDate()}function fv(r){return this.from(J(),r)}function Iv(r,s){return this.isValid()&&(_e(r)&&r.isValid()||J(r).isValid())?Ke({from:this,to:r}).locale(this.locale()).humanize(!s):this.localeData().invalidDate()}function gv(r){return this.to(J(),r)}function xa(r){var s;return r===void 0?this._locale._abbr:(s=mt(r),s!=null&&(this._locale=s),this)}var ba=Se("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(r){return r===void 0?this.localeData():this.locale(r)});function wa(){return this._locale}var Jr=1e3,zt=60*Jr,Qr=60*zt,Ra=(365*400+97)*24*Qr;function jt(r,s){return(r%s+s)%s}function Da(r,s,o){return r<100&&r>=0?new Date(r+400,s,o)-Ra:new Date(r,s,o).valueOf()}function Pa(r,s,o){return r<100&&r>=0?Date.UTC(r+400,s,o)-Ra:Date.UTC(r,s,o)}function yv(r){var s,o;if(r=Fe(r),r===void 0||r==="millisecond"||!this.isValid())return this;switch(o=this._isUTC?Pa:Da,r){case"year":s=o(this.year(),0,1);break;case"quarter":s=o(this.year(),this.month()-this.month()%3,1);break;case"month":s=o(this.year(),this.month(),1);break;case"week":s=o(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":s=o(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":s=o(this.year(),this.month(),this.date());break;case"hour":s=this._d.valueOf(),s-=jt(s+(this._isUTC?0:this.utcOffset()*zt),Qr);break;case"minute":s=this._d.valueOf(),s-=jt(s,zt);break;case"second":s=this._d.valueOf(),s-=jt(s,Jr);break}return this._d.setTime(s),e.updateOffset(this,!0),this}function _v(r){var s,o;if(r=Fe(r),r===void 0||r==="millisecond"||!this.isValid())return this;switch(o=this._isUTC?Pa:Da,r){case"year":s=o(this.year()+1,0,1)-1;break;case"quarter":s=o(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":s=o(this.year(),this.month()+1,1)-1;break;case"week":s=o(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":s=o(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":s=o(this.year(),this.month(),this.date()+1)-1;break;case"hour":s=this._d.valueOf(),s+=Qr-jt(s+(this._isUTC?0:this.utcOffset()*zt),Qr)-1;break;case"minute":s=this._d.valueOf(),s+=zt-jt(s,zt)-1;break;case"second":s=this._d.valueOf(),s+=Jr-jt(s,Jr)-1;break}return this._d.setTime(s),e.updateOffset(this,!0),this}function Sv(){return this._d.valueOf()-(this._offset||0)*6e4}function xv(){return Math.floor(this.valueOf()/1e3)}function bv(){return new Date(this.valueOf())}function wv(){var r=this;return[r.year(),r.month(),r.date(),r.hour(),r.minute(),r.second(),r.millisecond()]}function Rv(){var r=this;return{years:r.year(),months:r.month(),date:r.date(),hours:r.hours(),minutes:r.minutes(),seconds:r.seconds(),milliseconds:r.milliseconds()}}function Dv(){return this.isValid()?this.toISOString():null}function Pv(){return K(this)}function Mv(){return f({},_(this))}function Ev(){return _(this).overflow}function Av(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}P("N",0,0,"eraAbbr"),P("NN",0,0,"eraAbbr"),P("NNN",0,0,"eraAbbr"),P("NNNN",0,0,"eraName"),P("NNNNN",0,0,"eraNarrow"),P("y",["y",1],"yo","eraYear"),P("y",["yy",2],0,"eraYear"),P("y",["yyy",3],0,"eraYear"),P("y",["yyyy",4],0,"eraYear"),w("N",ks),w("NN",ks),w("NNN",ks),w("NNNN",Bv),w("NNNNN",Yv),j(["N","NN","NNN","NNNN","NNNNN"],function(r,s,o,u){var p=o._locale.erasParse(r,u,o._strict);p?_(o).era=p:_(o).invalidEra=r}),w("y",Ht),w("yy",Ht),w("yyy",Ht),w("yyyy",Ht),w("yo",Gv),j(["y","yy","yyy","yyyy"],we),j(["yo"],function(r,s,o,u){var p;o._locale._eraYearOrdinalRegex&&(p=r.match(o._locale._eraYearOrdinalRegex)),o._locale.eraYearOrdinalParse?s[we]=o._locale.eraYearOrdinalParse(r,p):s[we]=parseInt(r,10)});function Ov(r,s){var o,u,p,m=this._eras||mt("en")._eras;for(o=0,u=m.length;o=0)return m[u]}function Tv(r,s){var o=r.since<=r.until?1:-1;return s===void 0?e(r.since).year():e(r.since).year()+(s-r.offset)*o}function Vv(){var r,s,o,u=this.localeData().eras();for(r=0,s=u.length;rm&&(s=m),Zv.call(this,r,s,o,u,p))}function Zv(r,s,o,u,p){var m=ia(r,s,o,u,p),I=fr(m.year,0,m.dayOfYear);return this.year(I.getUTCFullYear()),this.month(I.getUTCMonth()),this.date(I.getUTCDate()),this}P("Q",0,"Qo","quarter"),xe("quarter","Q"),be("quarter",7),w("Q",Ki),j("Q",function(r,s){s[ut]=(B(r)-1)*3});function Jv(r){return r==null?Math.ceil((this.month()+1)/3):this.month((r-1)*3+this.month()%3)}P("D",["DD",2],"Do","date"),xe("date","D"),be("date",9),w("D",Z),w("DD",Z,ke),w("Do",function(r,s){return r?s._dayOfMonthOrdinalParse||s._ordinalParse:s._dayOfMonthOrdinalParseLenient}),j(["D","DD"],st),j("Do",function(r,s){s[st]=B(r.match(Z)[0])});var Ea=Gt("Date",!0);P("DDD",["DDDD",3],"DDDo","dayOfYear"),xe("dayOfYear","DDD"),be("dayOfYear",4),w("DDD",qr),w("DDDD",Zi),j(["DDD","DDDD"],function(r,s,o){o._dayOfYear=B(r)});function Qv(r){var s=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return r==null?s:this.add(r-s,"d")}P("m",["mm",2],0,"minute"),xe("minute","m"),be("minute",14),w("m",Z),w("mm",Z,ke),j(["m","mm"],$e);var Xv=Gt("Minutes",!1);P("s",["ss",2],0,"second"),xe("second","s"),be("second",15),w("s",Z),w("ss",Z,ke),j(["s","ss"],ct);var eh=Gt("Seconds",!1);P("S",0,0,function(){return~~(this.millisecond()/100)}),P(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),P(0,["SSS",3],0,"millisecond"),P(0,["SSSS",4],0,function(){return this.millisecond()*10}),P(0,["SSSSS",5],0,function(){return this.millisecond()*100}),P(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3}),P(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4}),P(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5}),P(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6}),xe("millisecond","ms"),be("millisecond",16),w("S",qr,Ki),w("SS",qr,ke),w("SSS",qr,Zi);var xt,Aa;for(xt="SSSS";xt.length<=9;xt+="S")w(xt,Ht);function th(r,s){s[Ot]=B(("0."+r)*1e3)}for(xt="S";xt.length<=9;xt+="S")j(xt,th);Aa=Gt("Milliseconds",!1),P("z",0,0,"zoneAbbr"),P("zz",0,0,"zoneName");function rh(){return this._isUTC?"UTC":""}function nh(){return this._isUTC?"Coordinated Universal Time":""}var S=_t.prototype;S.add=Km,S.calendar=rv,S.clone=nv,S.diff=cv,S.endOf=_v,S.format=hv,S.from=dv,S.fromNow=fv,S.to=Iv,S.toNow=gv,S.get=ip,S.invalidAt=Ev,S.isAfter=sv,S.isBefore=iv,S.isBetween=av,S.isSame=ov,S.isSameOrAfter=lv,S.isSameOrBefore=uv,S.isValid=Pv,S.lang=ba,S.locale=xa,S.localeData=wa,S.max=Pm,S.min=Dm,S.parsingFlags=Mv,S.set=ap,S.startOf=yv,S.subtract=Zm,S.toArray=wv,S.toObject=Rv,S.toDate=bv,S.toISOString=mv,S.inspect=vv,typeof Symbol!="undefined"&&Symbol.for!=null&&(S[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),S.toJSON=Dv,S.toString=pv,S.unix=xv,S.valueOf=Sv,S.creationData=Av,S.eraName=Vv,S.eraNarrow=Lv,S.eraAbbr=kv,S.eraYear=Cv,S.year=sa,S.isLeapYear=Rp,S.weekYear=Hv,S.isoWeekYear=Wv,S.quarter=S.quarters=Jv,S.month=ra,S.daysInMonth=xp,S.week=S.weeks=Op,S.isoWeek=S.isoWeeks=Np,S.weeksInYear=$v,S.weeksInWeekYear=Kv,S.isoWeeksInYear=zv,S.isoWeeksInISOWeekYear=jv,S.date=Ea,S.day=S.days=Wp,S.weekday=zp,S.isoWeekday=jp,S.dayOfYear=Qv,S.hour=S.hours=em,S.minute=S.minutes=Xv,S.second=S.seconds=eh,S.millisecond=S.milliseconds=Aa,S.utcOffset=km,S.utc=Fm,S.local=qm,S.parseZone=Um,S.hasAlignedHourOffset=Bm,S.isDST=Ym,S.isLocal=Hm,S.isUtcOffset=Wm,S.isUtc=Ia,S.isUTC=Ia,S.zoneAbbr=rh,S.zoneName=nh,S.dates=Se("dates accessor is deprecated. Use date instead.",Ea),S.months=Se("months accessor is deprecated. Use month instead",ra),S.years=Se("years accessor is deprecated. Use year instead",sa),S.zone=Se("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Cm),S.isDSTShifted=Se("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Gm);function sh(r){return J(r*1e3)}function ih(){return J.apply(null,arguments).parseZone()}function Oa(r){return r}var H=fs.prototype;H.calendar=Wc,H.longDateFormat=Kc,H.invalidDate=Jc,H.ordinal=ep,H.preparse=Oa,H.postformat=Oa,H.relativeTime=rp,H.pastFuture=np,H.set=Gc,H.eras=Ov,H.erasParse=Nv,H.erasConvertYear=Tv,H.erasAbbrRegex=qv,H.erasNameRegex=Fv,H.erasNarrowRegex=Uv,H.months=gp,H.monthsShort=yp,H.monthsParse=Sp,H.monthsRegex=wp,H.monthsShortRegex=bp,H.week=Pp,H.firstDayOfYear=Ap,H.firstDayOfWeek=Ep,H.weekdays=Up,H.weekdaysMin=Yp,H.weekdaysShort=Bp,H.weekdaysParse=Hp,H.weekdaysRegex=$p,H.weekdaysShortRegex=Kp,H.weekdaysMinRegex=Zp,H.isPM=Qp,H.meridiem=tm;function en(r,s,o,u){var p=mt(),m=y().set(u,s);return p[o](m,r)}function Na(r,s,o){if(h(r)&&(s=r,r=void 0),r=r||"",s!=null)return en(r,s,o,"month");var u,p=[];for(u=0;u<12;u++)p[u]=en(r,u,o,"month");return p}function Fs(r,s,o,u){typeof r=="boolean"?(h(s)&&(o=s,s=void 0),s=s||""):(s=r,o=s,r=!1,h(s)&&(o=s,s=void 0),s=s||"");var p=mt(),m=r?p._week.dow:0,I,M=[];if(o!=null)return en(s,(o+m)%7,u,"day");for(I=0;I<7;I++)M[I]=en(s,(I+m)%7,u,"day");return M}function ah(r,s){return Na(r,s,"months")}function oh(r,s){return Na(r,s,"monthsShort")}function lh(r,s,o){return Fs(r,s,o,"weekdays")}function uh(r,s,o){return Fs(r,s,o,"weekdaysShort")}function ch(r,s,o){return Fs(r,s,o,"weekdaysMin")}St("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(r){var s=r%10,o=B(r%100/10)===1?"th":s===1?"st":s===2?"nd":s===3?"rd":"th";return r+o}}),e.lang=Se("moment.lang is deprecated. Use moment.locale instead.",St),e.langData=Se("moment.langData is deprecated. Use moment.localeData instead.",mt);var vt=Math.abs;function ph(){var r=this._data;return this._milliseconds=vt(this._milliseconds),this._days=vt(this._days),this._months=vt(this._months),r.milliseconds=vt(r.milliseconds),r.seconds=vt(r.seconds),r.minutes=vt(r.minutes),r.hours=vt(r.hours),r.months=vt(r.months),r.years=vt(r.years),this}function Ta(r,s,o,u){var p=Ke(s,o);return r._milliseconds+=u*p._milliseconds,r._days+=u*p._days,r._months+=u*p._months,r._bubble()}function mh(r,s){return Ta(this,r,s,1)}function vh(r,s){return Ta(this,r,s,-1)}function Va(r){return r<0?Math.floor(r):Math.ceil(r)}function hh(){var r=this._milliseconds,s=this._days,o=this._months,u=this._data,p,m,I,M,q;return r>=0&&s>=0&&o>=0||r<=0&&s<=0&&o<=0||(r+=Va(qs(o)+s)*864e5,s=0,o=0),u.milliseconds=r%1e3,p=qe(r/1e3),u.seconds=p%60,m=qe(p/60),u.minutes=m%60,I=qe(m/60),u.hours=I%24,s+=qe(I/24),q=qe(La(s)),o+=q,s-=Va(qs(q)),M=qe(o/12),o%=12,u.days=s,u.months=o,u.years=M,this}function La(r){return r*4800/146097}function qs(r){return r*146097/4800}function dh(r){if(!this.isValid())return NaN;var s,o,u=this._milliseconds;if(r=Fe(r),r==="month"||r==="quarter"||r==="year")switch(s=this._days+u/864e5,o=this._months+La(s),r){case"month":return o;case"quarter":return o/3;case"year":return o/12}else switch(s=this._days+Math.round(qs(this._months)),r){case"week":return s/7+u/6048e5;case"day":return s+u/864e5;case"hour":return s*24+u/36e5;case"minute":return s*1440+u/6e4;case"second":return s*86400+u/1e3;case"millisecond":return Math.floor(s*864e5)+u;default:throw new Error("Unknown unit "+r)}}function fh(){return this.isValid()?this._milliseconds+this._days*864e5+this._months%12*2592e6+B(this._months/12)*31536e6:NaN}function ht(r){return function(){return this.as(r)}}var Ih=ht("ms"),gh=ht("s"),yh=ht("m"),_h=ht("h"),Sh=ht("d"),xh=ht("w"),bh=ht("M"),wh=ht("Q"),Rh=ht("y");function Dh(){return Ke(this)}function Ph(r){return r=Fe(r),this.isValid()?this[r+"s"]():NaN}function Tt(r){return function(){return this.isValid()?this._data[r]:NaN}}var Mh=Tt("milliseconds"),Eh=Tt("seconds"),Ah=Tt("minutes"),Oh=Tt("hours"),Nh=Tt("days"),Th=Tt("months"),Vh=Tt("years");function Lh(){return qe(this.days()/7)}var dt=Math.round,$t={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function kh(r,s,o,u,p){return p.relativeTime(s||1,!!o,r,u)}function Ch(r,s,o,u){var p=Ke(r).abs(),m=dt(p.as("s")),I=dt(p.as("m")),M=dt(p.as("h")),q=dt(p.as("d")),$=dt(p.as("M")),De=dt(p.as("w")),ft=dt(p.as("y")),bt=m<=o.ss&&["s",m]||m0,bt[4]=u,kh.apply(null,bt)}function Fh(r){return r===void 0?dt:typeof r=="function"?(dt=r,!0):!1}function qh(r,s){return $t[r]===void 0?!1:s===void 0?$t[r]:($t[r]=s,r==="s"&&($t.ss=s-1),!0)}function Uh(r,s){if(!this.isValid())return this.localeData().invalidDate();var o=!1,u=$t,p,m;return typeof r=="object"&&(s=r,r=!1),typeof r=="boolean"&&(o=r),typeof s=="object"&&(u=Object.assign({},$t,s),s.s!=null&&s.ss==null&&(u.ss=s.s-1)),p=this.localeData(),m=Ch(this,!o,u,p),o&&(m=p.pastFuture(+this,m)),p.postformat(m)}var Us=Math.abs;function Kt(r){return(r>0)-(r<0)||+r}function tn(){if(!this.isValid())return this.localeData().invalidDate();var r=Us(this._milliseconds)/1e3,s=Us(this._days),o=Us(this._months),u,p,m,I,M=this.asSeconds(),q,$,De,ft;return M?(u=qe(r/60),p=qe(u/60),r%=60,u%=60,m=qe(o/12),o%=12,I=r?r.toFixed(3).replace(/\.?0+$/,""):"",q=M<0?"-":"",$=Kt(this._months)!==Kt(M)?"-":"",De=Kt(this._days)!==Kt(M)?"-":"",ft=Kt(this._milliseconds)!==Kt(M)?"-":"",q+"P"+(m?$+m+"Y":"")+(o?$+o+"M":"")+(s?De+s+"D":"")+(p||u||r?"T":"")+(p?ft+p+"H":"")+(u?ft+u+"M":"")+(r?ft+I+"S":"")):"P0D"}var Y=$r.prototype;Y.isValid=Nm,Y.abs=ph,Y.add=mh,Y.subtract=vh,Y.as=dh,Y.asMilliseconds=Ih,Y.asSeconds=gh,Y.asMinutes=yh,Y.asHours=_h,Y.asDays=Sh,Y.asWeeks=xh,Y.asMonths=bh,Y.asQuarters=wh,Y.asYears=Rh,Y.valueOf=fh,Y._bubble=hh,Y.clone=Dh,Y.get=Ph,Y.milliseconds=Mh,Y.seconds=Eh,Y.minutes=Ah,Y.hours=Oh,Y.days=Nh,Y.weeks=Lh,Y.months=Th,Y.years=Vh,Y.humanize=Uh,Y.toISOString=tn,Y.toString=tn,Y.toJSON=tn,Y.locale=xa,Y.localeData=wa,Y.toIsoString=Se("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",tn),Y.lang=ba,P("X",0,0,"unix"),P("x",0,0,"valueOf"),w("x",Br),w("X",lp),j("X",function(r,s,o){o._d=new Date(parseFloat(r)*1e3)}),j("x",function(r,s,o){o._d=new Date(B(r))});return e.version="2.29.4",t(J),e.fn=S,e.min=Mm,e.max=Em,e.now=Am,e.utc=y,e.unix=sh,e.months=ah,e.isDate=d,e.locale=St,e.invalid=ee,e.duration=Ke,e.isMoment=_e,e.weekdays=lh,e.parseZone=ih,e.localeData=mt,e.isDuration=Kr,e.monthsShort=oh,e.weekdaysMin=ch,e.defineLocale=Ps,e.updateLocale=im,e.locales=am,e.weekdaysShort=uh,e.normalizeUnits=Fe,e.relativeTimeRounding=Fh,e.relativeTimeThreshold=qh,e.calendarFormat=tv,e.prototype=S,e.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},e})});var Dn=E((Z1,ja)=>{var $h={boolean:!1,function:!0,object:!0,number:!1,string:!1,undefined:!1};ja.exports=$h});var Rr=E((J1,$a)=>{var Kh=Dn();function Zh(i){return!!(i&&Kh[typeof i])}$a.exports=Zh});var Jt=E((Q1,Ka)=>{var Jh=Object.prototype,Qh=Jh.toString,Xh=RegExp("^"+String(Qh).replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/toString| for [^\]]+/g,".*?")+"$");Ka.exports=Xh});var Ja=E((X1,Za)=>{var ed=Dn(),td=Object.prototype,rd=td.hasOwnProperty,nd=function(i){var e,t=i,n=[];if(!t||!ed[typeof i])return n;for(e in t)rd.call(t,e)&&n.push(e);return n};Za.exports=nd});var Ks=E((eg,Qa)=>{var sd=Rr(),id=Jt(),ad=Ja(),Pn=id.test(Pn=Object.keys)&&Pn,od=Pn?function(i){return sd(i)?Pn(i):[]}:ad;Qa.exports=od});var Zs=E((tg,Xa)=>{function ld(){}Xa.exports=ld});var Js=E((ng,ro)=>{var eo=Rr(),rg=Zs(),ud=Jt(),Mn=ud.test(Mn=Object.create)&&Mn;function to(i,e){return eo(i)?Mn(i):{}}Mn||(to=function(){function i(){}return function(e){if(eo(e)){i.prototype=e;var t=new i;i.prototype=null}return t||globalThis.Object()}}());ro.exports=to});var En=E((sg,io)=>{var cd=Zs(),pd=Jt(),no={configurable:!1,enumerable:!1,value:null,writable:!1},so=function(){try{var i={},e=pd.test(e=Object.defineProperty)&&e,t=e(i,i,i)&&e}catch(n){}return t}(),md=so?function(i,e){no.value=e,so(i,"__bindData__",no)}:cd;io.exports=md});var oo=E((ig,ao)=>{var vd=Js(),hd=Rr(),dd=En(),fd=[],Id=fd.push;function gd(i){var e=i[0],t=i[2],n=i[4];function a(){if(t){var l=t.slice();Id.apply(l,arguments)}if(this instanceof a){var c=vd(e.prototype),v=e.apply(c,l||arguments);return hd(v)?v:c}return e.apply(n,l||arguments)}return dd(a,i),a}ao.exports=gd});var Qs=E((ag,lo)=>{function yd(i,e,t){e||(e=0),typeof t=="undefined"&&(t=i?i.length:0);for(var n=-1,a=t-e||0,l=Array(a<0?0:a);++n{var _d=Js(),Sd=Rr(),xd=En(),bd=Qs(),wd=[],uo=wd.push;function co(i){var e=i[0],t=i[1],n=i[2],a=i[3],l=i[4],c=i[5],v=t&1,h=t&2,d=t&4,g=t&8,f=e;function y(){var R=v?l:this;if(n){var _=n.slice();uo.apply(_,arguments)}if((a||d)&&(_||(_=bd(arguments)),a&&uo.apply(_,a),d&&_.length{function Rd(i){return typeof i=="function"}vo.exports=Rd});var yo=E((ug,go)=>{var Dd=oo(),Pd=mo(),Md=ho(),Ed=[],fo=Ed.push;function Io(i,e,t,n,a,l){var c=e&1,v=e&2,h=e&4,d=e&8,g=e&16,f=e&32;if(!v&&!Md(i))throw new TypeError;g&&!t.length&&(e&=-17,g=t=!1),f&&!n.length&&(e&=-33,f=n=!1);var y=i&&i.__bindData__;if(y&&y!==!0)return y=y.slice(),c&&!(y[1]&1)&&(y[4]=a),!c&&y[1]&1&&(e|=8),h&&!(y[1]&4)&&(y[5]=l),g&&fo.apply(y[2]||(y[2]=[]),t),f&&fo.apply(y[3]||(y[3]=[]),n),y[1]|=e,Io.apply(null,y);var R=e==1||e===17?Dd:Pd;return R([i,e,t,n,a,l])}go.exports=Io});var xo=E((pg,So)=>{var _o=yo(),cg=Jt(),Ad=Qs();function Od(i,e){return arguments.length>2?_o(i,17,Ad(arguments,2),null,e):_o(i,1,null,null,e)}So.exports=Od});var wo=E((mg,bo)=>{function Nd(i){return i}bo.exports=Nd});var Do=E((vg,Ro)=>{var Td=Jt(),Vd=/\bthis\b/,Xs={};Xs.funcDecomp=!Td.test(globalThis.WinRTError)&&Vd.test(function(){return this});Xs.funcNames=typeof Function.name=="string";Ro.exports=Xs});var ti=E((hg,Po)=>{var Ld=xo(),kd=wo(),Cd=En(),ei=Do(),Fd=/^\s*function[ \n\r\t]+\w/,qd=/\bthis\b/,Ud=Function.prototype.toString;function Bd(i,e,t){if(typeof i!="function")return kd;if(typeof e=="undefined"||!("prototype"in i))return i;var n=i.__bindData__;if(typeof n=="undefined"&&(ei.funcNames&&(n=!i.name),n=n||!ei.funcDecomp,!n)){var a=Ud.call(i);ei.funcNames||(n=!Fd.test(a)),n||(n=qd.test(a),Cd(i,n))}if(n===!1||n!==!0&&n[1]&1)return i;switch(t){case 1:return function(l){return i.call(e,l)};case 2:return function(l,c){return i.call(e,l,c)};case 3:return function(l,c,v){return i.call(e,l,c,v)};case 4:return function(l,c,v,h){return i.call(e,l,c,v,h)}}return Ld(i,e)}Po.exports=Bd});var Ao=E((dg,Eo)=>{var Yd=ti(),Gd=Ks(),Mo=Dn(),Hd=function(i,e,t){var n,a=i,l=a;if(!a||!Mo[typeof a])return l;e=e&&typeof t=="undefined"?e:Yd(e,t,3);for(var c=-1,v=Mo[typeof a]&&Gd(a),h=v?v.length:0;++c{var Wd=ti(),zd=Ao();function jd(i,e,t){var n=-1,a=i?i.length:0;if(e=e&&typeof t=="undefined"?e:Wd(e,t,3),typeof a=="number")for(;++n{var To,Vo;To={mm:{name:{singular:"Millimeter",plural:"Millimeters"},to_anchor:1/1e3},cm:{name:{singular:"Centimeter",plural:"Centimeters"},to_anchor:1/100},m:{name:{singular:"Meter",plural:"Meters"},to_anchor:1},km:{name:{singular:"Kilometer",plural:"Kilometers"},to_anchor:1e3}};Vo={in:{name:{singular:"Inch",plural:"Inches"},to_anchor:1/12},yd:{name:{singular:"Yard",plural:"Yards"},to_anchor:3},"ft-us":{name:{singular:"US Survey Foot",plural:"US Survey Feet"},to_anchor:1.000002},ft:{name:{singular:"Foot",plural:"Feet"},to_anchor:1},mi:{name:{singular:"Mile",plural:"Miles"},to_anchor:5280}};Lo.exports={metric:To,imperial:Vo,_anchors:{metric:{unit:"m",ratio:3.28084},imperial:{unit:"ft",ratio:1/3.28084}}}});var Uo=E((gg,qo)=>{var Co,Fo;Co={mm2:{name:{singular:"Square Millimeter",plural:"Square Millimeters"},to_anchor:1/1e6},cm2:{name:{singular:"Centimeter",plural:"Centimeters"},to_anchor:1/1e4},m2:{name:{singular:"Square Meter",plural:"Square Meters"},to_anchor:1},ha:{name:{singular:"Hectare",plural:"Hectares"},to_anchor:1e4},km2:{name:{singular:"Square Kilometer",plural:"Square Kilometers"},to_anchor:1e6}};Fo={in2:{name:{singular:"Square Inch",plural:"Square Inches"},to_anchor:1/144},yd2:{name:{singular:"Square Yard",plural:"Square Yards"},to_anchor:9},ft2:{name:{singular:"Square Foot",plural:"Square Feet"},to_anchor:1},ac:{name:{singular:"Acre",plural:"Acres"},to_anchor:43560},mi2:{name:{singular:"Square Mile",plural:"Square Miles"},to_anchor:27878400}};qo.exports={metric:Co,imperial:Fo,_anchors:{metric:{unit:"m2",ratio:10.7639},imperial:{unit:"ft2",ratio:1/10.7639}}}});var Ho=E((yg,Go)=>{var Bo,Yo;Bo={mcg:{name:{singular:"Microgram",plural:"Micrograms"},to_anchor:1/1e6},mg:{name:{singular:"Milligram",plural:"Milligrams"},to_anchor:1/1e3},g:{name:{singular:"Gram",plural:"Grams"},to_anchor:1},kg:{name:{singular:"Kilogram",plural:"Kilograms"},to_anchor:1e3},mt:{name:{singular:"Metric Tonne",plural:"Metric Tonnes"},to_anchor:1e6}};Yo={oz:{name:{singular:"Ounce",plural:"Ounces"},to_anchor:1/16},lb:{name:{singular:"Pound",plural:"Pounds"},to_anchor:1},t:{name:{singular:"Ton",plural:"Tons"},to_anchor:2e3}};Go.exports={metric:Bo,imperial:Yo,_anchors:{metric:{unit:"g",ratio:1/453.592},imperial:{unit:"lb",ratio:453.592}}}});var $o=E((_g,jo)=>{var Wo,zo;Wo={mm3:{name:{singular:"Cubic Millimeter",plural:"Cubic Millimeters"},to_anchor:1/1e6},cm3:{name:{singular:"Cubic Centimeter",plural:"Cubic Centimeters"},to_anchor:1/1e3},ml:{name:{singular:"Millilitre",plural:"Millilitres"},to_anchor:1/1e3},cl:{name:{singular:"Centilitre",plural:"Centilitres"},to_anchor:1/100},dl:{name:{singular:"Decilitre",plural:"Decilitres"},to_anchor:1/10},l:{name:{singular:"Litre",plural:"Litres"},to_anchor:1},kl:{name:{singular:"Kilolitre",plural:"Kilolitres"},to_anchor:1e3},m3:{name:{singular:"Cubic meter",plural:"Cubic meters"},to_anchor:1e3},km3:{name:{singular:"Cubic kilometer",plural:"Cubic kilometers"},to_anchor:1e12},krm:{name:{singular:"Matsked",plural:"Matskedar"},to_anchor:1/1e3},tsk:{name:{singular:"Tesked",plural:"Teskedar"},to_anchor:5/1e3},msk:{name:{singular:"Matsked",plural:"Matskedar"},to_anchor:15/1e3},kkp:{name:{singular:"Kaffekopp",plural:"Kaffekoppar"},to_anchor:150/1e3},glas:{name:{singular:"Glas",plural:"Glas"},to_anchor:200/1e3},kanna:{name:{singular:"Kanna",plural:"Kannor"},to_anchor:2.617}};zo={tsp:{name:{singular:"Teaspoon",plural:"Teaspoons"},to_anchor:1/6},Tbs:{name:{singular:"Tablespoon",plural:"Tablespoons"},to_anchor:1/2},in3:{name:{singular:"Cubic inch",plural:"Cubic inches"},to_anchor:.55411},"fl-oz":{name:{singular:"Fluid Ounce",plural:"Fluid Ounces"},to_anchor:1},cup:{name:{singular:"Cup",plural:"Cups"},to_anchor:8},pnt:{name:{singular:"Pint",plural:"Pints"},to_anchor:16},qt:{name:{singular:"Quart",plural:"Quarts"},to_anchor:32},gal:{name:{singular:"Gallon",plural:"Gallons"},to_anchor:128},ft3:{name:{singular:"Cubic foot",plural:"Cubic feet"},to_anchor:957.506},yd3:{name:{singular:"Cubic yard",plural:"Cubic yards"},to_anchor:25852.7}};jo.exports={metric:Wo,imperial:zo,_anchors:{metric:{unit:"l",ratio:33.8140226},imperial:{unit:"fl-oz",ratio:1/33.8140226}}}});var Jo=E((Sg,Zo)=>{var Ko;Ko={ea:{name:{singular:"Each",plural:"Each"},to_anchor:1},dz:{name:{singular:"Dozen",plural:"Dozens"},to_anchor:12}};Zo.exports={metric:Ko,imperial:{},_anchors:{metric:{unit:"ea",ratio:1}}}});var tl=E((xg,el)=>{var Qo,Xo;Qo={C:{name:{singular:"degree Celsius",plural:"degrees Celsius"},to_anchor:1,anchor_shift:0},K:{name:{singular:"degree Kelvin",plural:"degrees Kelvin"},to_anchor:1,anchor_shift:273.15}};Xo={F:{name:{singular:"degree Fahrenheit",plural:"degrees Fahrenheit"},to_anchor:1},R:{name:{singular:"degree Rankine",plural:"degrees Rankine"},to_anchor:1,anchor_shift:459.67}};el.exports={metric:Qo,imperial:Xo,_anchors:{metric:{unit:"C",transform:function(i){return i/(5/9)+32}},imperial:{unit:"F",transform:function(i){return(i-32)*(5/9)}}}}});var il=E((bg,sl)=>{var nl,rl=365.25;nl={ns:{name:{singular:"Nanosecond",plural:"Nanoseconds"},to_anchor:1/1e9},mu:{name:{singular:"Microsecond",plural:"Microseconds"},to_anchor:1/1e6},ms:{name:{singular:"Millisecond",plural:"Milliseconds"},to_anchor:1/1e3},s:{name:{singular:"Second",plural:"Seconds"},to_anchor:1},min:{name:{singular:"Minute",plural:"Minutes"},to_anchor:60},h:{name:{singular:"Hour",plural:"Hours"},to_anchor:60*60},d:{name:{singular:"Day",plural:"Days"},to_anchor:60*60*24},week:{name:{singular:"Week",plural:"Weeks"},to_anchor:60*60*24*7},month:{name:{singular:"Month",plural:"Months"},to_anchor:60*60*24*rl/12},year:{name:{singular:"Year",plural:"Years"},to_anchor:60*60*24*rl}};sl.exports={metric:nl,_anchors:{metric:{unit:"s",ratio:1}}}});var ul=E((wg,ll)=>{var al,ol;al={b:{name:{singular:"Bit",plural:"Bits"},to_anchor:1},Kb:{name:{singular:"Kilobit",plural:"Kilobits"},to_anchor:1024},Mb:{name:{singular:"Megabit",plural:"Megabits"},to_anchor:1048576},Gb:{name:{singular:"Gigabit",plural:"Gigabits"},to_anchor:1073741824},Tb:{name:{singular:"Terabit",plural:"Terabits"},to_anchor:1099511627776}};ol={B:{name:{singular:"Byte",plural:"Bytes"},to_anchor:1},KB:{name:{singular:"Kilobyte",plural:"Kilobytes"},to_anchor:1024},MB:{name:{singular:"Megabyte",plural:"Megabytes"},to_anchor:1048576},GB:{name:{singular:"Gigabyte",plural:"Gigabytes"},to_anchor:1073741824},TB:{name:{singular:"Terabyte",plural:"Terabytes"},to_anchor:1099511627776}};ll.exports={bits:al,bytes:ol,_anchors:{bits:{unit:"b",ratio:1/8},bytes:{unit:"B",ratio:8}}}});var ml=E((Rg,pl)=>{var cl;cl={ppm:{name:{singular:"Part-per Million",plural:"Parts-per Million"},to_anchor:1},ppb:{name:{singular:"Part-per Billion",plural:"Parts-per Billion"},to_anchor:.001},ppt:{name:{singular:"Part-per Trillion",plural:"Parts-per Trillion"},to_anchor:1e-6},ppq:{name:{singular:"Part-per Quadrillion",plural:"Parts-per Quadrillion"},to_anchor:1e-9}};pl.exports={metric:cl,imperial:{},_anchors:{metric:{unit:"ppm",ratio:1e-6}}}});var fl=E((Dg,dl)=>{var vl,hl;vl={"m/s":{name:{singular:"Metre per second",plural:"Metres per second"},to_anchor:3.6},"km/h":{name:{singular:"Kilometre per hour",plural:"Kilometres per hour"},to_anchor:1}};hl={"m/h":{name:{singular:"Mile per hour",plural:"Miles per hour"},to_anchor:1},knot:{name:{singular:"Knot",plural:"Knots"},to_anchor:1.150779},"ft/s":{name:{singular:"Foot per second",plural:"Feet per second"},to_anchor:.681818}};dl.exports={metric:vl,imperial:hl,_anchors:{metric:{unit:"km/h",ratio:1/1.609344},imperial:{unit:"m/h",ratio:1.609344}}}});var _l=E((Pg,yl)=>{var Il,gl;Il={"min/km":{name:{singular:"Minute per kilometre",plural:"Minutes per kilometre"},to_anchor:.06},"s/m":{name:{singular:"Second per metre",plural:"Seconds per metre"},to_anchor:1}};gl={"min/mi":{name:{singular:"Minute per mile",plural:"Minutes per mile"},to_anchor:.0113636},"s/ft":{name:{singular:"Second per foot",plural:"Seconds per foot"},to_anchor:1}};yl.exports={metric:Il,imperial:gl,_anchors:{metric:{unit:"s/m",ratio:.3048},imperial:{unit:"s/ft",ratio:1/.3048}}}});var wl=E((Mg,bl)=>{var Sl,xl;Sl={Pa:{name:{singular:"pascal",plural:"pascals"},to_anchor:1/1e3},kPa:{name:{singular:"kilopascal",plural:"kilopascals"},to_anchor:1},MPa:{name:{singular:"megapascal",plural:"megapascals"},to_anchor:1e3},hPa:{name:{singular:"hectopascal",plural:"hectopascals"},to_anchor:1/10},bar:{name:{singular:"bar",plural:"bar"},to_anchor:100},torr:{name:{singular:"torr",plural:"torr"},to_anchor:101325/76e4}};xl={psi:{name:{singular:"pound per square inch",plural:"pounds per square inch"},to_anchor:1/1e3},ksi:{name:{singular:"kilopound per square inch",plural:"kilopound per square inch"},to_anchor:1}};bl.exports={metric:Sl,imperial:xl,_anchors:{metric:{unit:"kPa",ratio:.00014503768078},imperial:{unit:"psi",ratio:1/.00014503768078}}}});var Pl=E((Eg,Dl)=>{var Rl;Rl={A:{name:{singular:"Ampere",plural:"Amperes"},to_anchor:1},mA:{name:{singular:"Milliampere",plural:"Milliamperes"},to_anchor:.001},kA:{name:{singular:"Kiloampere",plural:"Kiloamperes"},to_anchor:1e3}};Dl.exports={metric:Rl,_anchors:{metric:{unit:"A",ratio:1}}}});var Al=E((Ag,El)=>{var Ml;Ml={V:{name:{singular:"Volt",plural:"Volts"},to_anchor:1},mV:{name:{singular:"Millivolt",plural:"Millivolts"},to_anchor:.001},kV:{name:{singular:"Kilovolt",plural:"Kilovolts"},to_anchor:1e3}};El.exports={metric:Ml,_anchors:{metric:{unit:"V",ratio:1}}}});var Tl=E((Og,Nl)=>{var Ol;Ol={W:{name:{singular:"Watt",plural:"Watts"},to_anchor:1},mW:{name:{singular:"Milliwatt",plural:"Milliwatts"},to_anchor:.001},kW:{name:{singular:"Kilowatt",plural:"Kilowatts"},to_anchor:1e3},MW:{name:{singular:"Megawatt",plural:"Megawatts"},to_anchor:1e6},GW:{name:{singular:"Gigawatt",plural:"Gigawatts"},to_anchor:1e9}};Nl.exports={metric:Ol,_anchors:{metric:{unit:"W",ratio:1}}}});var kl=E((Ng,Ll)=>{var Vl;Vl={VAR:{name:{singular:"Volt-Ampere Reactive",plural:"Volt-Amperes Reactive"},to_anchor:1},mVAR:{name:{singular:"Millivolt-Ampere Reactive",plural:"Millivolt-Amperes Reactive"},to_anchor:.001},kVAR:{name:{singular:"Kilovolt-Ampere Reactive",plural:"Kilovolt-Amperes Reactive"},to_anchor:1e3},MVAR:{name:{singular:"Megavolt-Ampere Reactive",plural:"Megavolt-Amperes Reactive"},to_anchor:1e6},GVAR:{name:{singular:"Gigavolt-Ampere Reactive",plural:"Gigavolt-Amperes Reactive"},to_anchor:1e9}};Ll.exports={metric:Vl,_anchors:{metric:{unit:"VAR",ratio:1}}}});var ql=E((Tg,Fl)=>{var Cl;Cl={VA:{name:{singular:"Volt-Ampere",plural:"Volt-Amperes"},to_anchor:1},mVA:{name:{singular:"Millivolt-Ampere",plural:"Millivolt-Amperes"},to_anchor:.001},kVA:{name:{singular:"Kilovolt-Ampere",plural:"Kilovolt-Amperes"},to_anchor:1e3},MVA:{name:{singular:"Megavolt-Ampere",plural:"Megavolt-Amperes"},to_anchor:1e6},GVA:{name:{singular:"Gigavolt-Ampere",plural:"Gigavolt-Amperes"},to_anchor:1e9}};Fl.exports={metric:Cl,_anchors:{metric:{unit:"VA",ratio:1}}}});var Yl=E((Vg,Bl)=>{var Ul;Ul={Wh:{name:{singular:"Watt-hour",plural:"Watt-hours"},to_anchor:3600},mWh:{name:{singular:"Milliwatt-hour",plural:"Milliwatt-hours"},to_anchor:3.6},kWh:{name:{singular:"Kilowatt-hour",plural:"Kilowatt-hours"},to_anchor:36e5},MWh:{name:{singular:"Megawatt-hour",plural:"Megawatt-hours"},to_anchor:36e8},GWh:{name:{singular:"Gigawatt-hour",plural:"Gigawatt-hours"},to_anchor:36e11},J:{name:{singular:"Joule",plural:"Joules"},to_anchor:1},kJ:{name:{singular:"Kilojoule",plural:"Kilojoules"},to_anchor:1e3}};Bl.exports={metric:Ul,_anchors:{metric:{unit:"J",ratio:1}}}});var Wl=E((Lg,Hl)=>{var Gl;Gl={VARh:{name:{singular:"Volt-Ampere Reactive Hour",plural:"Volt-Amperes Reactive Hour"},to_anchor:1},mVARh:{name:{singular:"Millivolt-Ampere Reactive Hour",plural:"Millivolt-Amperes Reactive Hour"},to_anchor:.001},kVARh:{name:{singular:"Kilovolt-Ampere Reactive Hour",plural:"Kilovolt-Amperes Reactive Hour"},to_anchor:1e3},MVARh:{name:{singular:"Megavolt-Ampere Reactive Hour",plural:"Megavolt-Amperes Reactive Hour"},to_anchor:1e6},GVARh:{name:{singular:"Gigavolt-Ampere Reactive Hour",plural:"Gigavolt-Amperes Reactive Hour"},to_anchor:1e9}};Hl.exports={metric:Gl,_anchors:{metric:{unit:"VARh",ratio:1}}}});var Kl=E((kg,$l)=>{var zl,jl;zl={"mm3/s":{name:{singular:"Cubic Millimeter per second",plural:"Cubic Millimeters per second"},to_anchor:1/1e6},"cm3/s":{name:{singular:"Cubic Centimeter per second",plural:"Cubic Centimeters per second"},to_anchor:1/1e3},"ml/s":{name:{singular:"Millilitre per second",plural:"Millilitres per second"},to_anchor:1/1e3},"cl/s":{name:{singular:"Centilitre per second",plural:"Centilitres per second"},to_anchor:1/100},"dl/s":{name:{singular:"Decilitre per second",plural:"Decilitres per second"},to_anchor:1/10},"l/s":{name:{singular:"Litre per second",plural:"Litres per second"},to_anchor:1},"l/min":{name:{singular:"Litre per minute",plural:"Litres per minute"},to_anchor:1/60},"l/h":{name:{singular:"Litre per hour",plural:"Litres per hour"},to_anchor:1/3600},"kl/s":{name:{singular:"Kilolitre per second",plural:"Kilolitres per second"},to_anchor:1e3},"kl/min":{name:{singular:"Kilolitre per minute",plural:"Kilolitres per minute"},to_anchor:50/3},"kl/h":{name:{singular:"Kilolitre per hour",plural:"Kilolitres per hour"},to_anchor:5/18},"m3/s":{name:{singular:"Cubic meter per second",plural:"Cubic meters per second"},to_anchor:1e3},"m3/min":{name:{singular:"Cubic meter per minute",plural:"Cubic meters per minute"},to_anchor:50/3},"m3/h":{name:{singular:"Cubic meter per hour",plural:"Cubic meters per hour"},to_anchor:5/18},"km3/s":{name:{singular:"Cubic kilometer per second",plural:"Cubic kilometers per second"},to_anchor:1e12}};jl={"tsp/s":{name:{singular:"Teaspoon per second",plural:"Teaspoons per second"},to_anchor:1/6},"Tbs/s":{name:{singular:"Tablespoon per second",plural:"Tablespoons per second"},to_anchor:1/2},"in3/s":{name:{singular:"Cubic inch per second",plural:"Cubic inches per second"},to_anchor:.55411},"in3/min":{name:{singular:"Cubic inch per minute",plural:"Cubic inches per minute"},to_anchor:.55411/60},"in3/h":{name:{singular:"Cubic inch per hour",plural:"Cubic inches per hour"},to_anchor:.55411/3600},"fl-oz/s":{name:{singular:"Fluid Ounce per second",plural:"Fluid Ounces per second"},to_anchor:1},"fl-oz/min":{name:{singular:"Fluid Ounce per minute",plural:"Fluid Ounces per minute"},to_anchor:1/60},"fl-oz/h":{name:{singular:"Fluid Ounce per hour",plural:"Fluid Ounces per hour"},to_anchor:1/3600},"cup/s":{name:{singular:"Cup per second",plural:"Cups per second"},to_anchor:8},"pnt/s":{name:{singular:"Pint per second",plural:"Pints per second"},to_anchor:16},"pnt/min":{name:{singular:"Pint per minute",plural:"Pints per minute"},to_anchor:4/15},"pnt/h":{name:{singular:"Pint per hour",plural:"Pints per hour"},to_anchor:1/225},"qt/s":{name:{singular:"Quart per second",plural:"Quarts per second"},to_anchor:32},"gal/s":{name:{singular:"Gallon per second",plural:"Gallons per second"},to_anchor:128},"gal/min":{name:{singular:"Gallon per minute",plural:"Gallons per minute"},to_anchor:32/15},"gal/h":{name:{singular:"Gallon per hour",plural:"Gallons per hour"},to_anchor:8/225},"ft3/s":{name:{singular:"Cubic foot per second",plural:"Cubic feet per second"},to_anchor:957.506},"ft3/min":{name:{singular:"Cubic foot per minute",plural:"Cubic feet per minute"},to_anchor:957.506/60},"ft3/h":{name:{singular:"Cubic foot per hour",plural:"Cubic feet per hour"},to_anchor:957.506/3600},"yd3/s":{name:{singular:"Cubic yard per second",plural:"Cubic yards per second"},to_anchor:25852.7},"yd3/min":{name:{singular:"Cubic yard per minute",plural:"Cubic yards per minute"},to_anchor:25852.7/60},"yd3/h":{name:{singular:"Cubic yard per hour",plural:"Cubic yards per hour"},to_anchor:25852.7/3600}};$l.exports={metric:zl,imperial:jl,_anchors:{metric:{unit:"l/s",ratio:33.8140227},imperial:{unit:"fl-oz/s",ratio:1/33.8140227}}}});var Xl=E((Cg,Ql)=>{var Zl,Jl;Zl={lx:{name:{singular:"Lux",plural:"Lux"},to_anchor:1}};Jl={"ft-cd":{name:{singular:"Foot-candle",plural:"Foot-candles"},to_anchor:1}};Ql.exports={metric:Zl,imperial:Jl,_anchors:{metric:{unit:"lx",ratio:1/10.76391},imperial:{unit:"ft-cd",ratio:10.76391}}}});var ru=E((Fg,tu)=>{var eu;eu={mHz:{name:{singular:"millihertz",plural:"millihertz"},to_anchor:1/1e3},Hz:{name:{singular:"hertz",plural:"hertz"},to_anchor:1},kHz:{name:{singular:"kilohertz",plural:"kilohertz"},to_anchor:1e3},MHz:{name:{singular:"megahertz",plural:"megahertz"},to_anchor:1e3*1e3},GHz:{name:{singular:"gigahertz",plural:"gigahertz"},to_anchor:1e3*1e3*1e3},THz:{name:{singular:"terahertz",plural:"terahertz"},to_anchor:1e3*1e3*1e3*1e3},rpm:{name:{singular:"rotation per minute",plural:"rotations per minute"},to_anchor:1/60},"deg/s":{name:{singular:"degree per second",plural:"degrees per second"},to_anchor:1/360},"rad/s":{name:{singular:"radian per second",plural:"radians per second"},to_anchor:1/(Math.PI*2)}};tu.exports={metric:eu,_anchors:{frequency:{unit:"hz",ratio:1}}}});var iu=E((qg,su)=>{var nu;nu={rad:{name:{singular:"radian",plural:"radians"},to_anchor:180/Math.PI},deg:{name:{singular:"degree",plural:"degrees"},to_anchor:1},grad:{name:{singular:"gradian",plural:"gradians"},to_anchor:9/10},arcmin:{name:{singular:"arcminute",plural:"arcminutes"},to_anchor:1/60},arcsec:{name:{singular:"arcsecond",plural:"arcseconds"},to_anchor:1/3600}};su.exports={metric:nu,_anchors:{metric:{unit:"deg",ratio:1}}}});var Pr=E((Ug,lu)=>{var au,Dr=Ks(),Ue=No(),It={length:ko(),area:Uo(),mass:Ho(),volume:$o(),each:Jo(),temperature:tl(),time:il(),digital:ul(),partsPer:ml(),speed:fl(),pace:_l(),pressure:wl(),current:Pl(),voltage:Al(),power:Tl(),reactivePower:kl(),apparentPower:ql(),energy:Yl(),reactiveEnergy:Wl(),volumeFlowRate:Kl(),illuminance:Xl(),frequency:ru(),angle:iu()},Be;Be=function(i,e){e?this.val=i/e:this.val=i};Be.prototype.from=function(i){if(this.destination)throw new Error(".from must be called before .to");return this.origin=this.getUnit(i),this.origin||this.throwUnsupportedUnitError(i),this};Be.prototype.to=function(i){if(!this.origin)throw new Error(".to must be called after .from");this.destination=this.getUnit(i);var e,t;if(this.destination||this.throwUnsupportedUnitError(i),this.origin.abbr===this.destination.abbr)return this.val;if(this.destination.measure!=this.origin.measure)throw new Error("Cannot convert incompatible measures of "+this.destination.measure+" and "+this.origin.measure);return e=this.val*this.origin.unit.to_anchor,this.origin.unit.anchor_shift&&(e-=this.origin.unit.anchor_shift),this.origin.system!=this.destination.system&&(t=It[this.origin.measure]._anchors[this.origin.system].transform,typeof t=="function"?e=t(e):e*=It[this.origin.measure]._anchors[this.origin.system].ratio),this.destination.unit.anchor_shift&&(e+=this.destination.unit.anchor_shift),e/this.destination.unit.to_anchor};Be.prototype.toBest=function(e){if(!this.origin)throw new Error(".toBest must be called after .from");var e=Object.assign({exclude:[],cutOffNumber:1},e),t;return Ue(this.possibilities(),function(n){var a=this.describe(n),l=e.exclude.indexOf(n)===-1;if(l&&a.system===this.origin.system){var c=this.to(n);(!t||c>=e.cutOffNumber&&c{"use strict";Object.defineProperty(ot,"__esModule",{value:!0});function Pe(i){let e=i||"";return function(){throw new Error("this method "+e+" is abstract! (it has no implementation in class "+this.constructor.name+")")}}function wt(i,e){if(!i)throw new Error(e||"Assertion failed")}function ai(i,e,t){let n;Object.defineProperty(i,e,{get(){return n||(n=t.call(this)),n}})}function $d(i){return i&&Object.assign({},i)}function wu(i,e){let t=[];for(;e-- >0;)t.push(i());return t}function Ru(i,e){return new Array(e+1).join(i)}function Fn(i,e){return wu(()=>i,e)}function oi(i){let e=[];for(let t=0;t{e.indexOf(t)<0&&e.push(t)}),e}function kt(i){let e=i[0];return e===e.toUpperCase()}function Pu(i){return!kt(i)}function Mu(i,e,t){let n=t||" ";return i.lengthString.fromCodePoint(parseInt(i,16));function Eu(i){if(i.charAt(0)==="\\")switch(i.charAt(1)){case"b":return"\b";case"f":return"\f";case"n":return` +`;case"r":return"\r";case"t":return" ";case"v":return"\v";case"x":return ni(i.slice(2,4));case"u":return i.charAt(2)==="{"?ni(i.slice(3,-1)):ni(i.slice(2,6));default:return i.charAt(1)}else return i}function Ii(i){if(i==null)return String(i);let e=Object.prototype.toString.call(i);try{let t;return i.constructor&&i.constructor.name?t=i.constructor.name:e.indexOf("[object ")===0?t=e.slice(8,-1):t=typeof i,t+": "+JSON.stringify(String(i))}catch(t){return e}}var Kd=Object.freeze({__proto__:null,abstract:Pe,assert:wt,defineLazyProperty:ai,clone:$d,repeatFn:wu,repeatStr:Ru,repeat:Fn,getDuplicates:oi,copyWithoutDuplicates:Du,isSyntactic:kt,isLexical:Pu,padLeft:Mu,StringBuffer:Bt,unescapeCodePoint:Eu,unexpectedObjToString:Ii}),Zd={Lu:/\p{Lu}/u,Ll:/\p{Ll}/u,Lt:/\p{Lt}/u,Lm:/\p{Lm}/u,Lo:/\p{Lo}/u,Nl:/\p{Nl}/u,Nd:/\p{Nd}/u,Mn:/\p{Mn}/u,Mc:/\p{Mc}/u,Pc:/\p{Pc}/u,Zs:/\p{Zs}/u,L:/\p{Letter}/u,Ltmo:/\p{Lt}|\p{Lm}|\p{Lo}/u},V=class i{constructor(){if(this.constructor===i)throw new Error("PExpr cannot be instantiated -- it's abstract")}withSource(e){return e&&(this.source=e.trimmed()),this}},ge=Object.create(V.prototype),ye=Object.create(V.prototype),le=class extends V{constructor(e){super(),this.obj=e}},ce=class extends V{constructor(e,t){super(),this.from=e,this.to=t,this.matchCodePoint=e.length>1||t.length>1}},pe=class extends V{constructor(e){super(),this.index=e}},re=class extends V{constructor(e){super(),this.terms=e}},Ct=class extends re{constructor(e,t,n){let a=e.rules[t].body;super([n,a]),this.superGrammar=e,this.name=t,this.body=n}},Ft=class extends re{constructor(e,t,n,a){let l=e.rules[t].body;super([...n,l,...a]),this.superGrammar=e,this.ruleName=t,this.expansionPos=n.length}},ie=class extends V{constructor(e){super(),this.factors=e}},he=class extends V{constructor(e){super(),this.expr=e}},at=class extends he{},gt=class extends he{},Ye=class extends he{};at.prototype.operator="*";gt.prototype.operator="+";Ye.prototype.operator="?";at.prototype.minNumMatches=0;gt.prototype.minNumMatches=1;Ye.prototype.minNumMatches=0;at.prototype.maxNumMatches=Number.POSITIVE_INFINITY;gt.prototype.maxNumMatches=Number.POSITIVE_INFINITY;Ye.prototype.maxNumMatches=1;var de=class extends V{constructor(e){super(),this.expr=e}},fe=class extends V{constructor(e){super(),this.expr=e}},Ie=class extends V{constructor(e){super(),this.expr=e}},z=class extends V{constructor(e,t=[]){super(),this.ruleName=e,this.args=t}isSyntactic(){return kt(this.ruleName)}toMemoKey(){return this._memoKey||Object.defineProperty(this,"_memoKey",{value:this.toString()}),this._memoKey}},oe=class extends V{constructor(e){super(),this.category=e,this.pattern=Zd[e]}};function ne(i,e){let t;return e?(t=new Error(e.getLineAndColumnMessage()+i),t.shortMessage=i,t.interval=e):t=new Error(i),t}function li(){return ne("Interval sources don't match")}function Jd(i){let e=new Error;return Object.defineProperty(e,"message",{enumerable:!0,get(){return i.message}}),Object.defineProperty(e,"shortMessage",{enumerable:!0,get(){return"Expected "+i.getExpectedText()}}),e.interval=i.getInterval(),e}function Qd(i,e,t){let n=e?`Grammar ${i} is not declared in namespace '${e}'`:"Undeclared grammar "+i;return ne(n,t)}function Xd(i,e){return ne("Grammar "+i.name+" is already declared in this namespace")}function ef(i){return ne(`Grammar '${i.name}' does not support incremental parsing`)}function Au(i,e,t){return ne("Rule "+i+" is not declared in grammar "+e,t)}function tf(i,e,t){return ne("Cannot override rule "+i+" because it is not declared in "+e,t)}function rf(i,e,t){return ne("Cannot extend rule "+i+" because it is not declared in "+e,t)}function vu(i,e,t,n){let a="Duplicate declaration for rule '"+i+"' in grammar '"+e+"'";return e!==t&&(a+=" (originally declared in '"+t+"')"),ne(a,n)}function Ou(i,e,t,n){return ne("Wrong number of parameters for rule "+i+" (expected "+e+", got "+t+")",n)}function nf(i,e,t,n){return ne("Wrong number of arguments for rule "+i+" (expected "+e+", got "+t+")",n)}function hu(i,e,t){return ne("Duplicate parameter names in rule "+i+": "+e.join(", "),t)}function sf(i,e){return ne("Invalid parameter to rule "+i+": "+e+" has arity "+e.getArity()+", but parameter expressions must have arity 1",e.source)}var af="NOTE: A _syntactic rule_ is a rule whose name begins with a capital letter. See https://ohmjs.org/d/svl for more details.";function of(i,e){return ne("Cannot apply syntactic rule "+i+" from here (inside a lexical context)",e.source)}function lf(i){let{ruleName:e}=i;return ne(`applySyntactic is for syntactic rules, but '${e}' is a lexical rule. `+af,i.source)}function uf(i){return ne("applySyntactic is not required here (in a syntactic context)",i.source)}function du(i,e){return ne("Incorrect argument type: expected "+i,e.source)}function cf(i){return ne("'...' can appear at most once in a rule body",i.source)}function pf(i){let e=i._node;wt(e&&e.isNonterminal()&&e.ctorName==="escapeChar_unicodeCodePoint");let t=i.children.slice(1,-1).map(a=>a.source),n=t[0].coverageWith(...t.slice(1));return ne(`U+${n.contents} is not a valid Unicode code point`,n)}function Nu(i,e){let t=e.length>0?e[e.length-1].args:[],a="Nullable expression "+i.expr.substituteParams(t)+" is not allowed inside '"+i.operator+"' (possible infinite loop)";if(e.length>0){let l=e.map(c=>new z(c.ruleName,c.args)).join(` +`);a+=` +Application stack (most recent application last): +`+l}return ne(a,i.expr.source)}function Tu(i,e,t,n){return ne("Rule "+i+" involves an alternation which has inconsistent arity (expected "+e+", got "+t+")",n.source)}function mf(i){let e=i.map(t=>t.message);return ne(["Errors:"].concat(e).join(` +- `),i[0].interval)}function vf(i,e,t,n){let a=n.slice(0,-1).map(h=>{let d=" "+h[0].name+" > "+h[1];return h.length===3?d+" for '"+h[2]+"'":d}).join(` +`);a+=` + `+e+" > "+i;let l="";i==="_iter"&&(l=[` +NOTE: as of Ohm v16, there is no default action for iteration nodes \u2014 see `," https://ohmjs.org/d/dsa for details."].join(` +`));let c=[`Missing semantic action for '${i}' in ${t} '${e}'.${l}`,"Action stack (most recent call last):",a].join(` +`),v=ne(c);return v.name="missingSemanticAction",v}function hf(i){if(i.length===1)throw i[0];if(i.length>1)throw mf(i)}function df(i){let e=0;return i.map(n=>{let a=n.toString();return e=Math.max(e,a.length),a}).map(n=>Mu(n,e))}function fu(i,e,t){let n=i.length,a=i.slice(0,t),l=i.slice(t+e.length);return(a+e+l).substr(0,n)}function ff(...i){let e=this,{offset:t}=e,{repeatStr:n}=Kd,a=new Bt;a.append("Line "+e.lineNum+", col "+e.colNum+`: +`);let l=df([e.prevLine==null?0:e.lineNum-1,e.lineNum,e.nextLine==null?0:e.lineNum+1]),c=(g,f,y)=>{a.append(y+l[g]+" | "+f+` +`)};e.prevLine!=null&&c(0,e.prevLine," "),c(1,e.line,"> ");let v=e.line.length,h=n(" ",v+1);for(let g=0;g=0&&f<=y,"range start must be >= 0 and <= end");let R=t-e.colNum+1;f=Math.max(0,f-R),y=Math.min(y-R,v),h=fu(h,n("~",y-f),f)}let d=2+l[1].length+3;return a.append(n(" ",d)),h=fu(h,"^",e.colNum-1),a.append(h.replace(/ +$/,"")+` +`),e.nextLine!=null&&c(2,e.nextLine," "),a.contents()}var ui=[];function Vu(i){ui.push(i)}function If(i){ui.forEach(e=>{e(i)}),ui=null}function gi(i,e){let t=1,n=1,a=0,l=0,c=null,v=null,h=-1;for(;a=0&&(v=i.slice(h,l).replace(/\r?\n$/,""));let g=i.slice(l,d).replace(/\r$/,"");return{offset:e,lineNum:t,colNum:n,line:g,prevLine:v,nextLine:c,toString:ff}}function yi(i,e,...t){return gi(i,e).toString(...t)}var Iu=(()=>{let i=0;return e=>""+e+i++})(),qt=class i{constructor(e,t,n){this.sourceString=e,this.startIdx=t,this.endIdx=n}get contents(){return this._contents===void 0&&(this._contents=this.sourceString.slice(this.startIdx,this.endIdx)),this._contents}get length(){return this.endIdx-this.startIdx}coverageWith(...e){return i.coverage(...e,this)}collapsedLeft(){return new i(this.sourceString,this.startIdx,this.startIdx)}collapsedRight(){return new i(this.sourceString,this.endIdx,this.endIdx)}getLineAndColumn(){return gi(this.sourceString,this.startIdx)}getLineAndColumnMessage(){let e=[this.startIdx,this.endIdx];return yi(this.sourceString,this.startIdx,e)}minus(e){if(this.sourceString!==e.sourceString)throw li();return this.startIdx===e.startIdx&&this.endIdx===e.endIdx?[]:this.startIdx=e.startIdx&&this.endIdx<=e.endIdx,"other interval does not cover this one"),new i(this.sourceString,this.startIdx-e.startIdx,this.endIdx-e.startIdx)}trimmed(){let{contents:e}=this,t=this.startIdx+e.match(/^\s*/)[0].length,n=this.endIdx-e.match(/\s*$/)[0].length;return new i(this.sourceString,t,n)}subInterval(e,t){let n=this.startIdx+e;return new i(this.sourceString,n,n+t)}};qt.coverage=function(i,...e){let{startIdx:t,endIdx:n}=i;for(let a of e){if(a.sourceString!==i.sourceString)throw li();t=Math.min(t,a.startIdx),n=Math.max(n,a.endIdx)}return new qt(i.sourceString,t,n)};var gf=65535,Xt=class{constructor(e){this.source=e,this.pos=0,this.examinedLength=0}atEnd(){let e=this.pos>=this.source.length;return this.examinedLength=Math.max(this.examinedLength,this.pos+1),e}next(){let e=this.source[this.pos++];return this.examinedLength=Math.max(this.examinedLength,this.pos),e}nextCharCode(){let e=this.next();return e&&e.charCodeAt(0)}nextCodePoint(){let e=this.source.slice(this.pos++).codePointAt(0);return e>gf&&(this.pos+=1),this.examinedLength=Math.max(this.examinedLength,this.pos),e}matchString(e,t){let n;if(t){for(n=0;n!n.isFluffy());for(let n=0;n0&&(n===t.length-1?e.append(t.length>2?", or ":" or "):e.append(", ")),e.append(t[n].toString());return e.contents()}getInterval(){let e=this.getRightmostFailurePosition();return new qt(this.input,e,e)}},ci=class{constructor(){this.applicationMemoKeyStack=[],this.memo={},this.maxExaminedLength=0,this.maxRightmostFailureOffset=-1,this.currentLeftRecursion=void 0}isActive(e){return this.applicationMemoKeyStack.indexOf(e.toMemoKey())>=0}enter(e){this.applicationMemoKeyStack.push(e.toMemoKey())}exit(){this.applicationMemoKeyStack.pop()}startLeftRecursion(e,t){t.isLeftRecursion=!0,t.headApplication=e,t.nextLeftRecursion=this.currentLeftRecursion,this.currentLeftRecursion=t;let{applicationMemoKeyStack:n}=this,a=n.indexOf(e.toMemoKey())+1,l=n.slice(a);t.isInvolved=function(c){return l.indexOf(c)>=0},t.updateInvolvedApplicationMemoKeys=function(){for(let c=a;c{let l=n[a];e+l.examinedLength>t?delete n[a]:(this.maxExaminedLength=Math.max(this.maxExaminedLength,l.examinedLength),this.maxRightmostFailureOffset=Math.max(this.maxRightmostFailureOffset,l.rightmostFailureOffset))})}},yf="\u2717",_f="\u2713",Sf="\u22C5",xf="\u21D2",bf="\u2409",wf="\u240A",Rf="\u240D",pi={succeeded:1,isRootNode:2,isImplicitSpaces:4,isMemoized:8,isHeadOfLeftRecursion:16,terminatesLR:32};function Df(i){return Fn(" ",i).join("")}function Pf(i,e,t){let n=Lu(i.slice(e,e+t));return n.length{a(d,l,v+1)}),n.exit&&n.exit.call(t,l,c,v))}this.isRootNode?this.children.forEach(l=>{a(l,null,0)}):a(this,null,0)}toString(){let e=new Bt;return this.walk((t,n,a)=>{if(!t)return this.SKIP;if(t.expr.constructor.name!=="Alt"){if(e.append(Pf(t.input,t.pos,10)+Df(a*2+1)),e.append((t.succeeded?_f:yf)+" "+t.displayString),t.isHeadOfLeftRecursion&&e.append(" (LR)"),t.succeeded){let c=Lu(t.source.contents);e.append(" "+xf+" "),e.append(typeof c=="string"?'"'+c+'"':c)}e.append(` +`)}}),e.contents()}};er.prototype.SKIP={};Object.keys(pi).forEach(i=>{let e=pi[i];Object.defineProperty(er.prototype,i,{get(){return(this._flags&e)!==0},set(t){t?this._flags|=e:this._flags&=~e}})});V.prototype.allowsSkippingPrecedingSpace=Pe("allowsSkippingPrecedingSpace");ge.allowsSkippingPrecedingSpace=ye.allowsSkippingPrecedingSpace=z.prototype.allowsSkippingPrecedingSpace=le.prototype.allowsSkippingPrecedingSpace=ce.prototype.allowsSkippingPrecedingSpace=oe.prototype.allowsSkippingPrecedingSpace=function(){return!0};re.prototype.allowsSkippingPrecedingSpace=he.prototype.allowsSkippingPrecedingSpace=Ie.prototype.allowsSkippingPrecedingSpace=fe.prototype.allowsSkippingPrecedingSpace=de.prototype.allowsSkippingPrecedingSpace=pe.prototype.allowsSkippingPrecedingSpace=ie.prototype.allowsSkippingPrecedingSpace=function(){return!1};var Mr;Vu(i=>{Mr=i});var Nn;V.prototype.assertAllApplicationsAreValid=function(i,e){Nn=0,this._assertAllApplicationsAreValid(i,e)};V.prototype._assertAllApplicationsAreValid=Pe("_assertAllApplicationsAreValid");ge._assertAllApplicationsAreValid=ye._assertAllApplicationsAreValid=le.prototype._assertAllApplicationsAreValid=ce.prototype._assertAllApplicationsAreValid=pe.prototype._assertAllApplicationsAreValid=oe.prototype._assertAllApplicationsAreValid=function(i,e){};Ie.prototype._assertAllApplicationsAreValid=function(i,e){Nn++,this.expr._assertAllApplicationsAreValid(i,e),Nn--};re.prototype._assertAllApplicationsAreValid=function(i,e){for(let t=0;t{if(d._assertAllApplicationsAreValid(i,e,v),d.getArity()!==1)throw sf(this.ruleName,d)})};V.prototype.assertChoicesHaveUniformArity=Pe("assertChoicesHaveUniformArity");ge.assertChoicesHaveUniformArity=ye.assertChoicesHaveUniformArity=le.prototype.assertChoicesHaveUniformArity=ce.prototype.assertChoicesHaveUniformArity=pe.prototype.assertChoicesHaveUniformArity=Ie.prototype.assertChoicesHaveUniformArity=oe.prototype.assertChoicesHaveUniformArity=function(i){};re.prototype.assertChoicesHaveUniformArity=function(i){if(this.terms.length===0)return;let e=this.terms[0].getArity();for(let t=0;t{e.assertIteratedExprsAreNotNullable(i)})};var Ar=class{constructor(e){this.matchLength=e}get ctorName(){throw new Error("subclass responsibility")}numChildren(){return this.children?this.children.length:0}childAt(e){if(this.children)return this.children[e]}indexOfChild(e){return this.children.indexOf(e)}hasChildren(){return this.numChildren()>0}hasNoChildren(){return!this.hasChildren()}onlyChild(){if(this.numChildren()!==1)throw new Error("cannot get only child of a node of type "+this.ctorName+" (it has "+this.numChildren()+" children)");return this.firstChild()}firstChild(){if(this.hasNoChildren())throw new Error("cannot get first child of a "+this.ctorName+" node, which has no children");return this.childAt(0)}lastChild(){if(this.hasNoChildren())throw new Error("cannot get last child of a "+this.ctorName+" node, which has no children");return this.childAt(this.numChildren()-1)}childBefore(e){let t=this.indexOfChild(e);if(t<0)throw new Error("Node.childBefore() called w/ an argument that is not a child");if(t===0)throw new Error("cannot get child before first child");return this.childAt(t-1)}childAfter(e){let t=this.indexOfChild(e);if(t<0)throw new Error("Node.childAfter() called w/ an argument that is not a child");if(t===this.numChildren()-1)throw new Error("cannot get child after last child");return this.childAt(t+1)}isTerminal(){return!1}isNonterminal(){return!1}isIteration(){return!1}isOptional(){return!1}},yt=class extends Ar{get ctorName(){return"_terminal"}isTerminal(){return!0}get primitiveValue(){throw new Error("The `primitiveValue` property was removed in Ohm v17.")}},mi=class extends Ar{constructor(e,t,n,a){super(a),this.ruleName=e,this.children=t,this.childOffsets=n}get ctorName(){return this.ruleName}isNonterminal(){return!0}isLexical(){return Pu(this.ctorName)}isSyntactic(){return kt(this.ctorName)}},Tn=class extends Ar{constructor(e,t,n,a){super(n),this.children=e,this.childOffsets=t,this.optional=a}get ctorName(){return"_iter"}isIteration(){return!0}isOptional(){return this.optional}};V.prototype.eval=Pe("eval");ge.eval=function(i){let{inputStream:e}=i,t=e.pos,n=e.nextCodePoint();return n!==void 0?(i.pushBinding(new yt(String.fromCodePoint(n).length),t),!0):(i.processFailure(t,this),!1)};ye.eval=function(i){let{inputStream:e}=i,t=e.pos;return e.atEnd()?(i.pushBinding(new yt(0),t),!0):(i.processFailure(t,this),!1)};le.prototype.eval=function(i){let{inputStream:e}=i,t=e.pos;return e.matchString(this.obj)?(i.pushBinding(new yt(this.obj.length),t),!0):(i.processFailure(t,this),!1)};ce.prototype.eval=function(i){let{inputStream:e}=i,t=e.pos,n=this.matchCodePoint?e.nextCodePoint():e.nextCharCode();return n!==void 0&&this.from.codePointAt(0)<=n&&n<=this.to.codePointAt(0)?(i.pushBinding(new yt(String.fromCodePoint(n).length),t),!0):(i.processFailure(t,this),!1)};pe.prototype.eval=function(i){return i.eval(i.currentApplication().args[this.index])};Ie.prototype.eval=function(i){i.enterLexifiedContext();let e=i.eval(this.expr);return i.exitLexifiedContext(),e};re.prototype.eval=function(i){for(let e=0;e0){let y=a[n-1],R=l[n-1],_=R[R.length-1]+y[y.length-1].matchLength;d=l[0][0],g=_-d}let f=this instanceof Ye;for(h=0;ht.outputRecipe(i,e)))};Ct.prototype.outputRecipe=function(i,e){return this.terms[0].outputRecipe(i,e)};Ft.prototype.outputRecipe=function(i,e){let t=this.terms.slice(0,this.expansionPos),n=this.terms.slice(this.expansionPos+1);return["splice",Je(this,e),t.map(a=>a.outputRecipe(i,e)),n.map(a=>a.outputRecipe(i,e))]};ie.prototype.outputRecipe=function(i,e){return["seq",Je(this,e)].concat(this.factors.map(t=>t.outputRecipe(i,e)))};at.prototype.outputRecipe=gt.prototype.outputRecipe=Ye.prototype.outputRecipe=de.prototype.outputRecipe=fe.prototype.outputRecipe=Ie.prototype.outputRecipe=function(i,e){return[this.constructor.name.toLowerCase(),Je(this,e),this.expr.outputRecipe(i,e)]};z.prototype.outputRecipe=function(i,e){return["app",Je(this,e),this.ruleName,this.args.map(t=>t.outputRecipe(i,e))]};oe.prototype.outputRecipe=function(i,e){return["unicodeChar",Je(this,e),this.category]};V.prototype.introduceParams=Pe("introduceParams");ge.introduceParams=ye.introduceParams=le.prototype.introduceParams=ce.prototype.introduceParams=pe.prototype.introduceParams=oe.prototype.introduceParams=function(i){return this};re.prototype.introduceParams=function(i){return this.terms.forEach((e,t,n)=>{n[t]=e.introduceParams(i)}),this};ie.prototype.introduceParams=function(i){return this.factors.forEach((e,t,n)=>{n[t]=e.introduceParams(i)}),this};he.prototype.introduceParams=de.prototype.introduceParams=fe.prototype.introduceParams=Ie.prototype.introduceParams=function(i){return this.expr=this.expr.introduceParams(i),this};z.prototype.introduceParams=function(i){let e=i.indexOf(this.ruleName);if(e>=0){if(this.args.length>0)throw new Error("Parameterized rules cannot be passed as arguments to another rule.");return new pe(e).withSource(this.source)}else return this.args.forEach((t,n,a)=>{a[n]=t.introduceParams(i)}),this};V.prototype.isNullable=function(i){return this._isNullable(i,Object.create(null))};V.prototype._isNullable=Pe("_isNullable");ge._isNullable=ce.prototype._isNullable=pe.prototype._isNullable=gt.prototype._isNullable=oe.prototype._isNullable=function(i,e){return!1};ye._isNullable=function(i,e){return!0};le.prototype._isNullable=function(i,e){return typeof this.obj=="string"?this.obj==="":!1};re.prototype._isNullable=function(i,e){return this.terms.length===0||this.terms.some(t=>t._isNullable(i,e))};ie.prototype._isNullable=function(i,e){return this.factors.every(t=>t._isNullable(i,e))};at.prototype._isNullable=Ye.prototype._isNullable=de.prototype._isNullable=fe.prototype._isNullable=function(i,e){return!0};Ie.prototype._isNullable=function(i,e){return this.expr._isNullable(i,e)};z.prototype._isNullable=function(i,e){let t=this.toMemoKey();if(!Object.prototype.hasOwnProperty.call(e,t)){let{body:n}=i.rules[this.ruleName],a=n.substituteParams(this.args);e[t]=!1,e[t]=a._isNullable(i,e)}return e[t]};V.prototype.substituteParams=Pe("substituteParams");ge.substituteParams=ye.substituteParams=le.prototype.substituteParams=ce.prototype.substituteParams=oe.prototype.substituteParams=function(i){return this};pe.prototype.substituteParams=function(i){return i[this.index]};re.prototype.substituteParams=function(i){return new re(this.terms.map(e=>e.substituteParams(i)))};ie.prototype.substituteParams=function(i){return new ie(this.factors.map(e=>e.substituteParams(i)))};he.prototype.substituteParams=de.prototype.substituteParams=fe.prototype.substituteParams=Ie.prototype.substituteParams=function(i){return new this.constructor(this.expr.substituteParams(i))};z.prototype.substituteParams=function(i){if(this.args.length===0)return this;{let e=this.args.map(t=>t.substituteParams(i));return new z(this.ruleName,e)}};function gu(i){return/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(i)}function _i(i){let e=Object.create(null);i.forEach(t=>{e[t]=(e[t]||0)+1}),Object.keys(e).forEach(t=>{if(e[t]<=1)return;let n=1;i.forEach((a,l)=>{a===t&&(i[l]=a+"_"+n++)})})}V.prototype.toArgumentNameList=Pe("toArgumentNameList");ge.toArgumentNameList=function(i,e){return["any"]};ye.toArgumentNameList=function(i,e){return["end"]};le.prototype.toArgumentNameList=function(i,e){return typeof this.obj=="string"&&/^[_a-zA-Z0-9]+$/.test(this.obj)?["_"+this.obj]:["$"+i]};ce.prototype.toArgumentNameList=function(i,e){let t=this.from+"_to_"+this.to;return gu(t)||(t="_"+t),gu(t)||(t="$"+i),[t]};re.prototype.toArgumentNameList=function(i,e){let t=this.terms.map(l=>l.toArgumentNameList(i,!0)),n=[],a=t[0].length;for(let l=0;l{let a=n.toArgumentNameList(i,!0);t=t.concat(a),i+=a.length}),e||_i(t),t};he.prototype.toArgumentNameList=function(i,e){let t=this.expr.toArgumentNameList(i,e).map(n=>n[n.length-1]==="s"?n+"es":n+"s");return e||_i(t),t};Ye.prototype.toArgumentNameList=function(i,e){return this.expr.toArgumentNameList(i,e).map(t=>"opt"+t[0].toUpperCase()+t.slice(1))};de.prototype.toArgumentNameList=function(i,e){return[]};fe.prototype.toArgumentNameList=Ie.prototype.toArgumentNameList=function(i,e){return this.expr.toArgumentNameList(i,e)};z.prototype.toArgumentNameList=function(i,e){return[this.ruleName]};oe.prototype.toArgumentNameList=function(i,e){return["$"+i]};pe.prototype.toArgumentNameList=function(i,e){return["param"+this.index]};V.prototype.toDisplayString=Pe("toDisplayString");re.prototype.toDisplayString=ie.prototype.toDisplayString=function(){return this.source?this.source.trimmed().contents:"["+this.constructor.name+"]"};ge.toDisplayString=ye.toDisplayString=he.prototype.toDisplayString=de.prototype.toDisplayString=fe.prototype.toDisplayString=Ie.prototype.toDisplayString=le.prototype.toDisplayString=ce.prototype.toDisplayString=pe.prototype.toDisplayString=function(){return this.toString()};z.prototype.toDisplayString=function(){if(this.args.length>0){let i=this.args.map(e=>e.toDisplayString());return this.ruleName+"<"+i.join(",")+">"}else return this.ruleName};oe.prototype.toDisplayString=function(){return"Unicode ["+this.category+"] character"};function Mf(i){return i==="description"||i==="string"||i==="code"}var Le=class i{constructor(e,t,n){if(!Mf(n))throw new Error("invalid Failure type: "+n);this.pexpr=e,this.text=t,this.type=n,this.fluffy=!1}getPExpr(){return this.pexpr}getText(){return this.text}getType(){return this.type}isDescription(){return this.type==="description"}isStringTerminal(){return this.type==="string"}isCode(){return this.type==="code"}isFluffy(){return this.fluffy}makeFluffy(){this.fluffy=!0}clearFluffy(){this.fluffy=!1}subsumes(e){return this.getText()===e.getText()&&this.type===e.type&&(!this.isFluffy()||this.isFluffy()&&e.isFluffy())}toString(){return this.type==="string"?JSON.stringify(this.getText()):this.getText()}clone(){let e=new i(this.pexpr,this.text,this.type);return this.isFluffy()&&e.makeFluffy(),e}toKey(){return this.toString()+"#"+this.type}};V.prototype.toFailure=Pe("toFailure");ge.toFailure=function(i){return new Le(this,"any object","description")};ye.toFailure=function(i){return new Le(this,"end of input","description")};le.prototype.toFailure=function(i){return new Le(this,this.obj,"string")};ce.prototype.toFailure=function(i){return new Le(this,JSON.stringify(this.from)+".."+JSON.stringify(this.to),"code")};de.prototype.toFailure=function(i){let e=this.expr===ge?"nothing":"not "+this.expr.toFailure(i);return new Le(this,e,"description")};fe.prototype.toFailure=function(i){return this.expr.toFailure(i)};z.prototype.toFailure=function(i){let{description:e}=i.rules[this.ruleName];return e||(e=(/^[aeiouAEIOU]/.test(this.ruleName)?"an":"a")+" "+this.ruleName),new Le(this,e,"description")};oe.prototype.toFailure=function(i){return new Le(this,"a Unicode ["+this.category+"] character","description")};re.prototype.toFailure=function(i){let t="("+this.terms.map(n=>n.toFailure(i)).join(" or ")+")";return new Le(this,t,"description")};ie.prototype.toFailure=function(i){let t="("+this.factors.map(n=>n.toFailure(i)).join(" ")+")";return new Le(this,t,"description")};he.prototype.toFailure=function(i){let e="("+this.expr.toFailure(i)+this.operator+")";return new Le(this,e,"description")};V.prototype.toString=Pe("toString");ge.toString=function(){return"any"};ye.toString=function(){return"end"};le.prototype.toString=function(){return JSON.stringify(this.obj)};ce.prototype.toString=function(){return JSON.stringify(this.from)+".."+JSON.stringify(this.to)};pe.prototype.toString=function(){return"$"+this.index};Ie.prototype.toString=function(){return"#("+this.expr.toString()+")"};re.prototype.toString=function(){return this.terms.length===1?this.terms[0].toString():"("+this.terms.map(i=>i.toString()).join(" | ")+")"};ie.prototype.toString=function(){return this.factors.length===1?this.factors[0].toString():"("+this.factors.map(i=>i.toString()).join(" ")+")"};he.prototype.toString=function(){return this.expr+this.operator};de.prototype.toString=function(){return"~"+this.expr};fe.prototype.toString=function(){return"&"+this.expr};z.prototype.toString=function(){if(this.args.length>0){let i=this.args.map(e=>e.toString());return this.ruleName+"<"+i.join(",")+">"}else return this.ruleName};oe.prototype.toString=function(){return"\\p{"+this.category+"}"};var Vn=class i extends V{constructor(e){super(),this.obj=e}_getString(e){let t=e.currentApplication().args[this.obj.index];return wt(t instanceof le,"expected a Terminal expression"),t.obj}allowsSkippingPrecedingSpace(){return!0}eval(e){let{inputStream:t}=e,n=t.pos,a=this._getString(e);return t.matchString(a,!0)?(e.pushBinding(new yt(a.length),n),!0):(e.processFailure(n,this),!1)}getArity(){return 1}substituteParams(e){return new i(this.obj.substituteParams(e))}toDisplayString(){return this.obj.toDisplayString()+" (case-insensitive)"}toFailure(e){return new Le(this,this.obj.toFailure(e)+" (case-insensitive)","description")}_isNullable(e,t){return this.obj._isNullable(e,t)}},Ef=Object.freeze({__proto__:null,CaseInsensitiveTerminal:Vn,PExpr:V,any:ge,end:ye,Terminal:le,Range:ce,Param:pe,Alt:re,Extend:Ct,Splice:Ft,Seq:ie,Iter:he,Star:at,Plus:gt,Opt:Ye,Not:de,Lookahead:fe,Lex:Ie,Apply:z,UnicodeChar:oe}),ku;Vu(i=>{ku=i.rules.applySyntactic.body});var si=new z("spaces"),vi=class{constructor(e,t,n){this.matcher=e,this.startExpr=t,this.grammar=e.grammar,this.input=e.getInput(),this.inputStream=new Xt(this.input),this.memoTable=e._memoTable,this.userData=void 0,this.doNotMemoize=!1,this._bindings=[],this._bindingOffsets=[],this._applicationStack=[],this._posStack=[0],this.inLexifiedContextStack=[!1],this.rightmostFailurePosition=-1,this._rightmostFailurePositionStack=[],this._recordedFailuresStack=[],n!==void 0&&(this.positionToRecordFailures=n,this.recordedFailures=Object.create(null))}posToOffset(e){return e-this._posStack[this._posStack.length-1]}enterApplication(e,t){this._posStack.push(this.inputStream.pos),this._applicationStack.push(t),this.inLexifiedContextStack.push(!1),e.enter(t),this._rightmostFailurePositionStack.push(this.rightmostFailurePosition),this.rightmostFailurePosition=-1}exitApplication(e,t){let n=this._posStack.pop();this._applicationStack.pop(),this.inLexifiedContextStack.pop(),e.exit(),this.rightmostFailurePosition=Math.max(this.rightmostFailurePosition,this._rightmostFailurePositionStack.pop()),t&&this.pushBinding(t,n)}enterLexifiedContext(){this.inLexifiedContextStack.push(!0)}exitLexifiedContext(){this.inLexifiedContextStack.pop()}currentApplication(){return this._applicationStack[this._applicationStack.length-1]}inSyntacticContext(){let e=this.currentApplication();return e?e.isSyntactic()&&!this.inLexifiedContext():this.startExpr.factors[0].isSyntactic()}inLexifiedContext(){return this.inLexifiedContextStack[this.inLexifiedContextStack.length-1]}skipSpaces(){return this.pushFailuresInfo(),this.eval(si),this.popBinding(),this.popFailuresInfo(),this.inputStream.pos}skipSpacesIfInSyntacticContext(){return this.inSyntacticContext()?this.skipSpaces():this.inputStream.pos}maybeSkipSpacesBefore(e){return e.allowsSkippingPrecedingSpace()&&e!==si?this.skipSpacesIfInSyntacticContext():this.inputStream.pos}pushBinding(e,t){this._bindings.push(e),this._bindingOffsets.push(this.posToOffset(t))}popBinding(){this._bindings.pop(),this._bindingOffsets.pop()}numBindings(){return this._bindings.length}truncateBindings(e){for(;this._bindings.length>e;)this.popBinding()}getCurrentPosInfo(){return this.getPosInfo(this.inputStream.pos)}getPosInfo(e){let t=this.memoTable[e];return t||(t=this.memoTable[e]=new ci),t}processFailure(e,t){if(this.rightmostFailurePosition=Math.max(this.rightmostFailurePosition,e),this.recordedFailures&&e===this.positionToRecordFailures){let n=this.currentApplication();n&&(t=t.substituteParams(n.args)),this.recordFailure(t.toFailure(this.grammar),!1)}}recordFailure(e,t){let n=e.toKey();this.recordedFailures[n]?this.recordedFailures[n].isFluffy()&&!e.isFluffy()&&this.recordedFailures[n].clearFluffy():this.recordedFailures[n]=t?e.clone():e}recordFailures(e,t){Object.keys(e).forEach(n=>{this.recordFailure(e[n],t)})}cloneRecordedFailures(){if(!this.recordedFailures)return;let e=Object.create(null);return Object.keys(this.recordedFailures).forEach(t=>{e[t]=this.recordedFailures[t].clone()}),e}getRightmostFailurePosition(){return this.rightmostFailurePosition}_getRightmostFailureOffset(){return this.rightmostFailurePosition>=0?this.posToOffset(this.rightmostFailurePosition):-1}getMemoizedTraceEntry(e,t){let n=this.memoTable[e];if(n&&t instanceof z){let a=n.memo[t.toMemoKey()];if(a&&a.traceEntry){let l=a.traceEntry.cloneWithExpr(t);return l.isMemoized=!0,l}}return null}getTraceEntry(e,t,n,a){if(t instanceof z){let l=this.currentApplication(),c=l?l.args:[];t=t.substituteParams(c)}return this.getMemoizedTraceEntry(e,t)||new er(this.input,e,this.inputStream.pos,t,n,a,this.trace)}isTracing(){return!!this.trace}hasNecessaryInfo(e){return this.trace&&!e.traceEntry?!1:this.recordedFailures&&this.inputStream.pos+e.rightmostFailureOffset===this.positionToRecordFailures?!!e.failuresAtRightmostPosition:!0}useMemoizedResult(e,t){this.trace&&this.trace.push(t.traceEntry);let n=this.inputStream.pos+t.rightmostFailureOffset;return this.rightmostFailurePosition=Math.max(this.rightmostFailurePosition,n),this.recordedFailures&&this.positionToRecordFailures===n&&t.failuresAtRightmostPosition&&this.recordFailures(t.failuresAtRightmostPosition,!0),this.inputStream.examinedLength=Math.max(this.inputStream.examinedLength,t.examinedLength+e),t.value?(this.inputStream.pos+=t.matchLength,this.pushBinding(t.value,e),!0):!1}eval(e){let{inputStream:t}=this,n=this._bindings.length,a=this.userData,l;this.recordedFailures&&(l=this.recordedFailures,this.recordedFailures=Object.create(null));let c=t.pos,v=this.maybeSkipSpacesBefore(e),h;this.trace&&(h=this.trace,this.trace=[]);let d=e.eval(this);if(this.trace){let g=this._bindings.slice(n),f=this.getTraceEntry(v,e,d,g);f.isImplicitSpaces=e===si,f.isRootNode=e===this.startExpr,h.push(f),this.trace=h}return d?this.recordedFailures&&t.pos===this.positionToRecordFailures&&Object.keys(this.recordedFailures).forEach(g=>{this.recordedFailures[g].makeFluffy()}):(t.pos=c,this.truncateBindings(n),this.userData=a),this.recordedFailures&&this.recordFailures(l,!1),e===ku&&this.skipSpaces(),d}getMatchResult(){this.grammar._setUpMatchState(this),this.eval(this.startExpr);let e;this.recordedFailures&&(e=Object.keys(this.recordedFailures).map(n=>this.recordedFailures[n]));let t=this._bindings[0];return t&&(t.grammar=this.grammar),new On(this.matcher,this.input,this.startExpr,t,this._bindingOffsets[0],this.rightmostFailurePosition,e)}getTrace(){this.trace=[];let e=this.getMatchResult(),t=this.trace[this.trace.length-1];return t.result=e,t}pushFailuresInfo(){this._rightmostFailurePositionStack.push(this.rightmostFailurePosition),this._recordedFailuresStack.push(this.recordedFailures)}popFailuresInfo(){this.rightmostFailurePosition=this._rightmostFailurePositionStack.pop(),this.recordedFailures=this._recordedFailuresStack.pop()}},hi=class{constructor(e){this.grammar=e,this._memoTable=[],this._input="",this._isMemoTableStale=!1}_resetMemoTable(){this._memoTable=[],this._isMemoTableStale=!1}getInput(){return this._input}setInput(e){return this._input!==e&&this.replaceInputRange(0,this._input.length,e),this}replaceInputRange(e,t,n){let a=this._input,l=this._memoTable;if(e<0||e>a.length||t<0||t>a.length||e>t)throw new Error("Invalid indices: "+e+" and "+t);this._input=a.slice(0,e)+n+a.slice(t),this._input!==a&&l.length>0&&(this._isMemoTableStale=!0);let c=l.slice(t);l.length=e;for(let v=0;vObject.prototype.hasOwnProperty.call(i,e),Ln=class{constructor(e,t,n){this._node=e,this.source=t,this._baseInterval=n,e.isNonterminal()&&wt(t===n),this._childWrappers=[]}_forgetMemoizedResultFor(e){delete this._node[this._semantics.attributeKeys[e]],this.children.forEach(t=>{t._forgetMemoizedResultFor(e)})}child(e){if(!(0<=e&&ec._node),a=new Tn(n,[],-1,!1),l=this._semantics.wrap(a,null,null);return l._childWrappers=t,l}get children(){return this._children()}get ctorName(){return this._node.ctorName}get numChildren(){return this._node.numChildren()}get sourceString(){return this.source.contents}},Te=class i{constructor(e,t){let n=this;if(this.grammar=e,this.checkedActionDicts=!1,this.Wrapper=class extends(t?t.Wrapper:Ln){constructor(a,l,c){super(a,l,c),n.checkActionDictsIfHaventAlready(),this._semantics=n}toString(){return"[semantics wrapper for "+n.grammar.name+"]"}},this.super=t,t){if(!(e.equals(this.super.grammar)||e._inheritsFrom(this.super.grammar)))throw new Error("Cannot extend a semantics for grammar '"+this.super.grammar.name+"' for use with grammar '"+e.name+"' (not a sub-grammar)");this.operations=Object.create(this.super.operations),this.attributes=Object.create(this.super.attributes),this.attributeKeys=Object.create(null);for(let a in this.attributes)Object.defineProperty(this.attributeKeys,a,{value:Iu(a)})}else this.operations=Object.create(null),this.attributes=Object.create(null),this.attributeKeys=Object.create(null)}toString(){return"[semantics for "+this.grammar.name+"]"}checkActionDictsIfHaventAlready(){this.checkedActionDicts||(this.checkActionDicts(),this.checkedActionDicts=!0)}checkActionDicts(){let e;for(e in this.operations)this.operations[e].checkActionDict(this.grammar);for(e in this.attributes)this.attributes[e].checkActionDict(this.grammar)}toRecipe(e){function t(a){return a.super!==i.BuiltInSemantics._getSemantics()}let n=`(function(g) { +`;if(t(this)){n+=" var semantics = "+this.super.toRecipe(!0)+"(g";let a=this.super.grammar,l=this.grammar;for(;l!==a;)n+=".superGrammar",l=l.superGrammar;n+=`); +`,n+=" return g.extendSemantics(semantics)"}else n+=" return g.createSemantics()";return["Operation","Attribute"].forEach(a=>{let l=this[a.toLowerCase()+"s"];Object.keys(l).forEach(c=>{let{actionDict:v,formals:h,builtInDefault:d}=l[c],g=c;h.length>0&&(g+="("+h.join(", ")+")");let f;t(this)&&this.super[a.toLowerCase()+"s"][c]?f="extend"+a:f="add"+a,n+=` + .`+f+"("+JSON.stringify(g)+", {";let y=[];Object.keys(v).forEach(R=>{if(v[R]!==d){let _=v[R].toString().trim();_=_.replace(/^.*\(/,"function("),y.push(` + `+JSON.stringify(R)+": "+_)}}),n+=y.join(",")+` + })`})}),n+=`; + })`,e||(n=`(function() { + var grammar = this.fromRecipe(`+this.grammar.toRecipe()+`); + var semantics = `+n+`(grammar); + return semantics; +}); +`),n}addOperationOrAttribute(e,t,n){let a=e+"s",l=yu(t,e),{name:c}=l,{formals:v}=l;this.assertNewName(c,e);let h=Af(e,c,f),d={_default:h};Object.keys(n).forEach(y=>{d[y]=n[y]});let g=e==="operation"?new Ut(c,v,d,h):new Or(c,d,h);g.checkActionDict(this.grammar),this[a][c]=g;function f(...y){let R=this._semantics[a][c];if(arguments.length!==R.formals.length)throw new Error("Invalid number of arguments passed to "+c+" "+e+" (expected "+R.formals.length+", got "+arguments.length+")");let _=Object.create(null);for(let[ee,ae]of Object.entries(y)){let At=R.formals[ee];_[At]=ae}let O=this.args;this.args=_;let K=R.execute(this._semantics,this);return this.args=O,K}e==="operation"?(this.Wrapper.prototype[c]=f,this.Wrapper.prototype[c].toString=function(){return"["+c+" operation]"}):(Object.defineProperty(this.Wrapper.prototype,c,{get:f,configurable:!0}),Object.defineProperty(this.attributeKeys,c,{value:Iu(c)}))}extendOperationOrAttribute(e,t,n){let a=e+"s";if(yu(t,"attribute"),!(this.super&&t in this.super[a]))throw new Error("Cannot extend "+e+" '"+t+"': did not inherit an "+e+" with that name");if(di(this[a],t))throw new Error("Cannot extend "+e+" '"+t+"' again");let l=this[a][t].formals,c=this[a][t].actionDict,v=Object.create(c);Object.keys(n).forEach(h=>{v[h]=n[h]}),this[a][t]=e==="operation"?new Ut(t,l,v):new Or(t,v),this[a][t].checkActionDict(this.grammar)}assertNewName(e,t){if(di(Ln.prototype,e))throw new Error("Cannot add "+t+" '"+e+"': that's a reserved name");if(e in this.operations)throw new Error("Cannot add "+t+" '"+e+"': an operation with that name already exists");if(e in this.attributes)throw new Error("Cannot add "+t+" '"+e+"': an attribute with that name already exists")}wrap(e,t,n){let a=n||t;return e instanceof this.Wrapper?e:new this.Wrapper(e,t,a)}};function yu(i,e){if(!Te.prototypeGrammar)return wt(i.indexOf("(")===-1),{name:i,formals:[]};let t=Te.prototypeGrammar.match(i,e==="operation"?"OperationSignature":"AttributeSignature");if(t.failed())throw new Error(t.message);return Te.prototypeGrammarSemantics(t).parse()}function Af(i,e,t){return function(...n){let l=(this._semantics.operations[e]||this._semantics.attributes[e]).formals.map(c=>this.args[c]);if(!this.isIteration()&&n.length===1)return t.apply(n[0],l);throw vf(this.ctorName,e,i,Er)}}Te.createSemantics=function(i,e){let t=new Te(i,e!==void 0?e:Te.BuiltInSemantics._getSemantics()),n=function(l){if(!(l instanceof On))throw new TypeError("Semantics expected a MatchResult, but got "+Ii(l));if(l.failed())throw new TypeError("cannot apply Semantics to "+l.toString());let c=l._cst;if(c.grammar!==i)throw new Error("Cannot use a MatchResult from grammar '"+c.grammar.name+"' with a semantics for '"+i.name+"'");let v=new Xt(l.input);return t.wrap(c,v.interval(l._cstOffset,l.input.length))};return n.addOperation=function(a,l){return t.addOperationOrAttribute("operation",a,l),n},n.extendOperation=function(a,l){return t.extendOperationOrAttribute("operation",a,l),n},n.addAttribute=function(a,l){return t.addOperationOrAttribute("attribute",a,l),n},n.extendAttribute=function(a,l){return t.extendOperationOrAttribute("attribute",a,l),n},n._getActionDict=function(a){let l=t.operations[a]||t.attributes[a];if(!l)throw new Error('"'+a+'" is not a valid operation or attribute name in this semantics for "'+i.name+'"');return l.actionDict},n._remove=function(a){let l;return a in t.operations?(l=t.operations[a],delete t.operations[a]):a in t.attributes&&(l=t.attributes[a],delete t.attributes[a]),delete t.Wrapper.prototype[a],l},n.getOperationNames=function(){return Object.keys(t.operations)},n.getAttributeNames=function(){return Object.keys(t.attributes)},n.getGrammar=function(){return t.grammar},n.toRecipe=function(a){return t.toRecipe(a)},n.toString=t.toString.bind(t),n._getSemantics=function(){return t},n};var Ut=class{constructor(e,t,n,a){this.name=e,this.formals=t,this.actionDict=n,this.builtInDefault=a}checkActionDict(e){e._checkTopDownActionDict(this.typeName,this.name,this.actionDict)}execute(e,t){try{let{ctorName:n}=t._node,a=this.actionDict[n];return a?(Er.push([this,n]),a.apply(t,t._children())):t.isNonterminal()&&(a=this.actionDict._nonterminal,a)?(Er.push([this,"_nonterminal",n]),a.apply(t,t._children())):(Er.push([this,"default action",n]),this.actionDict._default.apply(t,t._children()))}finally{Er.pop()}}};Ut.prototype.typeName="operation";var Or=class extends Ut{constructor(e,t,n){super(e,[],t,n)}execute(e,t){let n=t._node,a=e.attributeKeys[this.name];return di(n,a)||(n[a]=Ut.prototype.execute.call(this,e,t)),n[a]}};Or.prototype.typeName="attribute";var _u=["_iter","_terminal","_nonterminal","_default"];function Su(i){return Object.keys(i.rules).sort().map(e=>i.rules[e])}var Of=i=>i.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029"),Cu,Fu,Ve=class i{constructor(e,t,n,a){if(this.name=e,this.superGrammar=t,this.rules=n,a){if(!(a in n))throw new Error("Invalid start rule: '"+a+"' is not a rule in grammar '"+e+"'");this.defaultStartRule=a}this._matchStateInitializer=void 0,this.supportsIncrementalParsing=!0}matcher(){return new hi(this)}isBuiltIn(){return this===i.ProtoBuiltInRules||this===i.BuiltInRules}equals(e){if(this===e)return!0;if(e==null||this.name!==e.name||this.defaultStartRule!==e.defaultStartRule||!(this.superGrammar===e.superGrammar||this.superGrammar.equals(e.superGrammar)))return!1;let t=Su(this),n=Su(e);return t.length===n.length&&t.every((a,l)=>a.description===n[l].description&&a.formals.join(",")===n[l].formals.join(",")&&a.body.toString()===n[l].body.toString())}match(e,t){let n=this.matcher();return n.replaceInputRange(0,0,e),n.match(t)}trace(e,t){let n=this.matcher();return n.replaceInputRange(0,0,e),n.trace(t)}createSemantics(){return Te.createSemantics(this)}extendSemantics(e){return Te.createSemantics(this,e._getSemantics())}_checkTopDownActionDict(e,t,n){let a=[];for(let l in n){let c=n[l];if(!_u.includes(l)&&!(l in this.rules)){a.push(`'${l}' is not a valid semantic action for '${this.name}'`);continue}if(typeof c!="function"){a.push(`'${l}' must be a function in an action dictionary for '${this.name}'`);continue}let h=c.length,d=this._topDownActionArity(l);if(h!==d){let g;l==="_iter"||l==="_nonterminal"?g=`it should use a rest parameter, e.g. \`${l}(...children) {}\`. NOTE: this is new in Ohm v16 \u2014 see https://ohmjs.org/d/ati for details.`:g=`expected ${d}, got ${h}`,a.push(`Semantic action '${l}' has the wrong arity: ${g}`)}}if(a.length>0){let l=a.map(v=>"- "+v),c=new Error([`Found errors in the action dictionary of the '${t}' ${e}:`,...l].join(` +`));throw c.problems=a,c}}_topDownActionArity(e){return _u.includes(e)?0:this.rules[e].body.getArity()}_inheritsFrom(e){let t=this.superGrammar;for(;t;){if(t.equals(e,!0))return!0;t=t.superGrammar}return!1}toRecipe(e=void 0){let t={};this.source&&(t.source=this.source.contents);let n=null;this.defaultStartRule&&(n=this.defaultStartRule);let a={};Object.keys(this.rules).forEach(v=>{let h=this.rules[v],{body:d}=h,g=!this.superGrammar||!this.superGrammar.rules[v],f;g?f="define":f=d instanceof Ct?"extend":"override";let y={};if(h.source&&this.source){let O=h.source.relativeTo(this.source);y.sourceInterval=[O.startIdx,O.endIdx]}let R=g?h.description:null,_=d.outputRecipe(h.formals,this.source);a[v]=[f,y,R,h.formals,_]});let l="null";e?l=e:this.superGrammar&&!this.superGrammar.isBuiltIn()&&(l=this.superGrammar.toRecipe());let c=[...["grammar",t,this.name].map(JSON.stringify),l,...[n,a].map(JSON.stringify)];return Of(`[${c.join(",")}]`)}toOperationActionDictionaryTemplate(){return this._toOperationOrAttributeActionDictionaryTemplate()}toAttributeActionDictionaryTemplate(){return this._toOperationOrAttributeActionDictionaryTemplate()}_toOperationOrAttributeActionDictionaryTemplate(){let e=new Bt;e.append("{");let t=!0;for(let n in this.rules){let{body:a}=this.rules[n];t?t=!1:e.append(","),e.append(` +`),e.append(" "),this.addSemanticActionTemplate(n,a,e)}return e.append(` +}`),e.contents()}addSemanticActionTemplate(e,t,n){n.append(e),n.append(": function(");let a=this._topDownActionArity(e);n.append(Fn("_",a).join(", ")),n.append(`) { +`),n.append(" }")}parseApplication(e){let t;if(e.indexOf("<")===-1)t=new z(e);else{let a=Cu.match(e,"Base_application");t=Fu(a,{})}if(!(t.ruleName in this.rules))throw Au(t.ruleName,this.name);let{formals:n}=this.rules[t.ruleName];if(n.length!==t.args.length){let{source:a}=this.rules[t.ruleName];throw Ou(t.ruleName,n.length,t.args.length,a)}return t}_setUpMatchState(e){this._matchStateInitializer&&this._matchStateInitializer(e)}};Ve.ProtoBuiltInRules=new Ve("ProtoBuiltInRules",void 0,{any:{body:ge,formals:[],description:"any character",primitive:!0},end:{body:ye,formals:[],description:"end of input",primitive:!0},caseInsensitive:{body:new Vn(new pe(0)),formals:["str"],primitive:!0},lower:{body:new oe("Ll"),formals:[],description:"a lowercase letter",primitive:!0},upper:{body:new oe("Lu"),formals:[],description:"an uppercase letter",primitive:!0},unicodeLtmo:{body:new oe("Ltmo"),formals:[],description:"a Unicode character in Lt, Lm, or Lo",primitive:!0},spaces:{body:new at(new z("space")),formals:[]},space:{body:new ce("\0"," "),formals:[],description:"a space"}});Ve.initApplicationParser=function(i,e){Cu=i,Fu=e};var kn=class{constructor(e){this.name=e}sourceInterval(e,t){return this.source.subInterval(e,t-e)}ensureSuperGrammar(){return this.superGrammar||this.withSuperGrammar(this.name==="BuiltInRules"?Ve.ProtoBuiltInRules:Ve.BuiltInRules),this.superGrammar}ensureSuperGrammarRuleForOverriding(e,t){let n=this.ensureSuperGrammar().rules[e];if(!n)throw tf(e,this.superGrammar.name,t);return n}installOverriddenOrExtendedRule(e,t,n,a){let l=oi(t);if(l.length>0)throw hu(e,l,a);let c=this.ensureSuperGrammar().rules[e],v=c.formals,h=v?v.length:0;if(t.length!==h)throw Ou(e,h,t.length,a);return this.install(e,t,n,c.description,a)}install(e,t,n,a,l,c=!1){return this.rules[e]={body:n.introduceParams(t),formals:t,description:a,source:l,primitive:c},this}withSuperGrammar(e){if(this.superGrammar)throw new Error("the super grammar of a GrammarDecl cannot be set more than once");return this.superGrammar=e,this.rules=Object.create(e.rules),e.isBuiltIn()||(this.defaultStartRule=e.defaultStartRule),this}withDefaultStartRule(e){return this.defaultStartRule=e,this}withSource(e){return this.source=new Xt(e).interval(0,e.length),this}build(){let e=new Ve(this.name,this.ensureSuperGrammar(),this.rules,this.defaultStartRule);e._matchStateInitializer=e.superGrammar._matchStateInitializer,e.supportsIncrementalParsing=e.superGrammar.supportsIncrementalParsing;let t=[],n=!1;return Object.keys(e.rules).forEach(a=>{let{body:l}=e.rules[a];try{l.assertChoicesHaveUniformArity(a)}catch(c){t.push(c)}try{l.assertAllApplicationsAreValid(a,e)}catch(c){t.push(c),n=!0}}),n||Object.keys(e.rules).forEach(a=>{let{body:l}=e.rules[a];try{l.assertIteratedExprsAreNotNullable(e,[])}catch(c){t.push(c)}}),t.length>0&&hf(t),this.source&&(e.source=this.source),e}define(e,t,n,a,l,c){if(this.ensureSuperGrammar(),this.superGrammar.rules[e])throw vu(e,this.name,this.superGrammar.name,l);if(this.rules[e])throw vu(e,this.name,this.name,l);let v=oi(t);if(v.length>0)throw hu(e,v,l);return this.install(e,t,n,a,l,c)}override(e,t,n,a,l){return this.ensureSuperGrammarRuleForOverriding(e,l),this.installOverriddenOrExtendedRule(e,t,n,l),this}extend(e,t,n,a,l){if(!this.ensureSuperGrammar().rules[e])throw rf(e,this.superGrammar.name,l);let v=new Ct(this.superGrammar,e,n);return v.source=n.source,this.installOverriddenOrExtendedRule(e,t,v,l),this}},tr=class{constructor(){this.currentDecl=null,this.currentRuleName=null}newGrammar(e){return new kn(e)}grammar(e,t,n,a,l){let c=new kn(t);return n&&c.withSuperGrammar(n instanceof Ve?n:this.fromRecipe(n)),a&&c.withDefaultStartRule(a),e&&e.source&&c.withSource(e.source),this.currentDecl=c,Object.keys(l).forEach(v=>{this.currentRuleName=v;let h=l[v],d=h[0],g=h[1],f=h[2],y=h[3],R=this.fromRecipe(h[4]),_;c.source&&g&&g.sourceInterval&&(_=c.source.subInterval(g.sourceInterval[0],g.sourceInterval[1]-g.sourceInterval[0])),c[d](v,y,R,f,_)}),this.currentRuleName=this.currentDecl=null,c.build()}terminal(e){return new le(e)}range(e,t){return new ce(e,t)}param(e){return new pe(e)}alt(...e){let t=[];for(let n of e)n instanceof V||(n=this.fromRecipe(n)),n instanceof re?t=t.concat(n.terms):t.push(n);return t.length===1?t[0]:new re(t)}seq(...e){let t=[];for(let n of e)n instanceof V||(n=this.fromRecipe(n)),n instanceof ie?t=t.concat(n.factors):t.push(n);return t.length===1?t[0]:new ie(t)}star(e){return e instanceof V||(e=this.fromRecipe(e)),new at(e)}plus(e){return e instanceof V||(e=this.fromRecipe(e)),new gt(e)}opt(e){return e instanceof V||(e=this.fromRecipe(e)),new Ye(e)}not(e){return e instanceof V||(e=this.fromRecipe(e)),new de(e)}lookahead(e){return e instanceof V||(e=this.fromRecipe(e)),new fe(e)}lex(e){return e instanceof V||(e=this.fromRecipe(e)),new Ie(e)}app(e,t){return t&&t.length>0&&(t=t.map(function(n){return n instanceof V?n:this.fromRecipe(n)},this)),new z(e,t)}splice(e,t){return new Ft(this.currentDecl.superGrammar,this.currentRuleName,e.map(n=>this.fromRecipe(n)),t.map(n=>this.fromRecipe(n)))}fromRecipe(e){let t=e[0]==="grammar"?e.slice(1):e.slice(2),n=this[e[0]](...t),a=e[1];return a&&a.sourceInterval&&this.currentDecl&&n.withSource(this.currentDecl.sourceInterval(...a.sourceInterval)),n}};function qn(i){return typeof i=="function"?i.call(new tr):(typeof i=="string"&&(i=JSON.parse(i)),new tr().fromRecipe(i))}var Si=qn(["grammar",{source:`BuiltInRules { + + alnum (an alpha-numeric character) + = letter + | digit + + letter (a letter) + = lower + | upper + | unicodeLtmo + + digit (a digit) + = "0".."9" + + hexDigit (a hexadecimal digit) + = digit + | "a".."f" + | "A".."F" + + ListOf + = NonemptyListOf + | EmptyListOf + + NonemptyListOf + = elem (sep elem)* + + EmptyListOf + = /* nothing */ + + listOf + = nonemptyListOf + | emptyListOf + + nonemptyListOf + = elem (sep elem)* + + emptyListOf + = /* nothing */ + + // Allows a syntactic rule application within a lexical context. + applySyntactic = app +}`},"BuiltInRules",null,null,{alnum:["define",{sourceInterval:[18,78]},"an alpha-numeric character",[],["alt",{sourceInterval:[60,78]},["app",{sourceInterval:[60,66]},"letter",[]],["app",{sourceInterval:[73,78]},"digit",[]]]],letter:["define",{sourceInterval:[82,142]},"a letter",[],["alt",{sourceInterval:[107,142]},["app",{sourceInterval:[107,112]},"lower",[]],["app",{sourceInterval:[119,124]},"upper",[]],["app",{sourceInterval:[131,142]},"unicodeLtmo",[]]]],digit:["define",{sourceInterval:[146,177]},"a digit",[],["range",{sourceInterval:[169,177]},"0","9"]],hexDigit:["define",{sourceInterval:[181,254]},"a hexadecimal digit",[],["alt",{sourceInterval:[219,254]},["app",{sourceInterval:[219,224]},"digit",[]],["range",{sourceInterval:[231,239]},"a","f"],["range",{sourceInterval:[246,254]},"A","F"]]],ListOf:["define",{sourceInterval:[258,336]},null,["elem","sep"],["alt",{sourceInterval:[282,336]},["app",{sourceInterval:[282,307]},"NonemptyListOf",[["param",{sourceInterval:[297,301]},0],["param",{sourceInterval:[303,306]},1]]],["app",{sourceInterval:[314,336]},"EmptyListOf",[["param",{sourceInterval:[326,330]},0],["param",{sourceInterval:[332,335]},1]]]]],NonemptyListOf:["define",{sourceInterval:[340,388]},null,["elem","sep"],["seq",{sourceInterval:[372,388]},["param",{sourceInterval:[372,376]},0],["star",{sourceInterval:[377,388]},["seq",{sourceInterval:[378,386]},["param",{sourceInterval:[378,381]},1],["param",{sourceInterval:[382,386]},0]]]]],EmptyListOf:["define",{sourceInterval:[392,434]},null,["elem","sep"],["seq",{sourceInterval:[438,438]}]],listOf:["define",{sourceInterval:[438,516]},null,["elem","sep"],["alt",{sourceInterval:[462,516]},["app",{sourceInterval:[462,487]},"nonemptyListOf",[["param",{sourceInterval:[477,481]},0],["param",{sourceInterval:[483,486]},1]]],["app",{sourceInterval:[494,516]},"emptyListOf",[["param",{sourceInterval:[506,510]},0],["param",{sourceInterval:[512,515]},1]]]]],nonemptyListOf:["define",{sourceInterval:[520,568]},null,["elem","sep"],["seq",{sourceInterval:[552,568]},["param",{sourceInterval:[552,556]},0],["star",{sourceInterval:[557,568]},["seq",{sourceInterval:[558,566]},["param",{sourceInterval:[558,561]},1],["param",{sourceInterval:[562,566]},0]]]]],emptyListOf:["define",{sourceInterval:[572,682]},null,["elem","sep"],["seq",{sourceInterval:[685,685]}]],applySyntactic:["define",{sourceInterval:[685,710]},null,["app"],["param",{sourceInterval:[707,710]},0]]}]);Ve.BuiltInRules=Si;If(Ve.BuiltInRules);var Un=qn(["grammar",{source:`Ohm { + + Grammars + = Grammar* + + Grammar + = ident SuperGrammar? "{" Rule* "}" + + SuperGrammar + = "<:" ident + + Rule + = ident Formals? ruleDescr? "=" RuleBody -- define + | ident Formals? ":=" OverrideRuleBody -- override + | ident Formals? "+=" RuleBody -- extend + + RuleBody + = "|"? NonemptyListOf + + TopLevelTerm + = Seq caseName -- inline + | Seq + + OverrideRuleBody + = "|"? NonemptyListOf + + OverrideTopLevelTerm + = "..." -- superSplice + | TopLevelTerm + + Formals + = "<" ListOf ">" + + Params + = "<" ListOf ">" + + Alt + = NonemptyListOf + + Seq + = Iter* + + Iter + = Pred "*" -- star + | Pred "+" -- plus + | Pred "?" -- opt + | Pred + + Pred + = "~" Lex -- not + | "&" Lex -- lookahead + | Lex + + Lex + = "#" Base -- lex + | Base + + Base + = ident Params? ~(ruleDescr? "=" | ":=" | "+=") -- application + | oneCharTerminal ".." oneCharTerminal -- range + | terminal -- terminal + | "(" Alt ")" -- paren + + ruleDescr (a rule description) + = "(" ruleDescrText ")" + + ruleDescrText + = (~")" any)* + + caseName + = "--" (~"\\n" space)* name (~"\\n" space)* ("\\n" | &"}") + + name (a name) + = nameFirst nameRest* + + nameFirst + = "_" + | letter + + nameRest + = "_" + | alnum + + ident (an identifier) + = name + + terminal + = "\\"" terminalChar* "\\"" + + oneCharTerminal + = "\\"" terminalChar "\\"" + + terminalChar + = escapeChar + | ~"\\\\" ~"\\"" ~"\\n" "\\u{0}".."\\u{10FFFF}" + + escapeChar (an escape sequence) + = "\\\\\\\\" -- backslash + | "\\\\\\"" -- doubleQuote + | "\\\\\\'" -- singleQuote + | "\\\\b" -- backspace + | "\\\\n" -- lineFeed + | "\\\\r" -- carriageReturn + | "\\\\t" -- tab + | "\\\\u{" hexDigit hexDigit? hexDigit? + hexDigit? hexDigit? hexDigit? "}" -- unicodeCodePoint + | "\\\\u" hexDigit hexDigit hexDigit hexDigit -- unicodeEscape + | "\\\\x" hexDigit hexDigit -- hexEscape + + space + += comment + + comment + = "//" (~"\\n" any)* &("\\n" | end) -- singleLine + | "/*" (~"*/" any)* "*/" -- multiLine + + tokens = token* + + token = caseName | comment | ident | operator | punctuation | terminal | any + + operator = "<:" | "=" | ":=" | "+=" | "*" | "+" | "?" | "~" | "&" + + punctuation = "<" | ">" | "," | "--" +}`},"Ohm",null,"Grammars",{Grammars:["define",{sourceInterval:[9,32]},null,[],["star",{sourceInterval:[24,32]},["app",{sourceInterval:[24,31]},"Grammar",[]]]],Grammar:["define",{sourceInterval:[36,83]},null,[],["seq",{sourceInterval:[50,83]},["app",{sourceInterval:[50,55]},"ident",[]],["opt",{sourceInterval:[56,69]},["app",{sourceInterval:[56,68]},"SuperGrammar",[]]],["terminal",{sourceInterval:[70,73]},"{"],["star",{sourceInterval:[74,79]},["app",{sourceInterval:[74,78]},"Rule",[]]],["terminal",{sourceInterval:[80,83]},"}"]]],SuperGrammar:["define",{sourceInterval:[87,116]},null,[],["seq",{sourceInterval:[106,116]},["terminal",{sourceInterval:[106,110]},"<:"],["app",{sourceInterval:[111,116]},"ident",[]]]],Rule_define:["define",{sourceInterval:[131,181]},null,[],["seq",{sourceInterval:[131,170]},["app",{sourceInterval:[131,136]},"ident",[]],["opt",{sourceInterval:[137,145]},["app",{sourceInterval:[137,144]},"Formals",[]]],["opt",{sourceInterval:[146,156]},["app",{sourceInterval:[146,155]},"ruleDescr",[]]],["terminal",{sourceInterval:[157,160]},"="],["app",{sourceInterval:[162,170]},"RuleBody",[]]]],Rule_override:["define",{sourceInterval:[188,248]},null,[],["seq",{sourceInterval:[188,235]},["app",{sourceInterval:[188,193]},"ident",[]],["opt",{sourceInterval:[194,202]},["app",{sourceInterval:[194,201]},"Formals",[]]],["terminal",{sourceInterval:[214,218]},":="],["app",{sourceInterval:[219,235]},"OverrideRuleBody",[]]]],Rule_extend:["define",{sourceInterval:[255,305]},null,[],["seq",{sourceInterval:[255,294]},["app",{sourceInterval:[255,260]},"ident",[]],["opt",{sourceInterval:[261,269]},["app",{sourceInterval:[261,268]},"Formals",[]]],["terminal",{sourceInterval:[281,285]},"+="],["app",{sourceInterval:[286,294]},"RuleBody",[]]]],Rule:["define",{sourceInterval:[120,305]},null,[],["alt",{sourceInterval:[131,305]},["app",{sourceInterval:[131,170]},"Rule_define",[]],["app",{sourceInterval:[188,235]},"Rule_override",[]],["app",{sourceInterval:[255,294]},"Rule_extend",[]]]],RuleBody:["define",{sourceInterval:[309,362]},null,[],["seq",{sourceInterval:[324,362]},["opt",{sourceInterval:[324,328]},["terminal",{sourceInterval:[324,327]},"|"]],["app",{sourceInterval:[329,362]},"NonemptyListOf",[["app",{sourceInterval:[344,356]},"TopLevelTerm",[]],["terminal",{sourceInterval:[358,361]},"|"]]]]],TopLevelTerm_inline:["define",{sourceInterval:[385,408]},null,[],["seq",{sourceInterval:[385,397]},["app",{sourceInterval:[385,388]},"Seq",[]],["app",{sourceInterval:[389,397]},"caseName",[]]]],TopLevelTerm:["define",{sourceInterval:[366,418]},null,[],["alt",{sourceInterval:[385,418]},["app",{sourceInterval:[385,397]},"TopLevelTerm_inline",[]],["app",{sourceInterval:[415,418]},"Seq",[]]]],OverrideRuleBody:["define",{sourceInterval:[422,491]},null,[],["seq",{sourceInterval:[445,491]},["opt",{sourceInterval:[445,449]},["terminal",{sourceInterval:[445,448]},"|"]],["app",{sourceInterval:[450,491]},"NonemptyListOf",[["app",{sourceInterval:[465,485]},"OverrideTopLevelTerm",[]],["terminal",{sourceInterval:[487,490]},"|"]]]]],OverrideTopLevelTerm_superSplice:["define",{sourceInterval:[522,543]},null,[],["terminal",{sourceInterval:[522,527]},"..."]],OverrideTopLevelTerm:["define",{sourceInterval:[495,562]},null,[],["alt",{sourceInterval:[522,562]},["app",{sourceInterval:[522,527]},"OverrideTopLevelTerm_superSplice",[]],["app",{sourceInterval:[550,562]},"TopLevelTerm",[]]]],Formals:["define",{sourceInterval:[566,606]},null,[],["seq",{sourceInterval:[580,606]},["terminal",{sourceInterval:[580,583]},"<"],["app",{sourceInterval:[584,602]},"ListOf",[["app",{sourceInterval:[591,596]},"ident",[]],["terminal",{sourceInterval:[598,601]},","]]],["terminal",{sourceInterval:[603,606]},">"]]],Params:["define",{sourceInterval:[610,647]},null,[],["seq",{sourceInterval:[623,647]},["terminal",{sourceInterval:[623,626]},"<"],["app",{sourceInterval:[627,643]},"ListOf",[["app",{sourceInterval:[634,637]},"Seq",[]],["terminal",{sourceInterval:[639,642]},","]]],["terminal",{sourceInterval:[644,647]},">"]]],Alt:["define",{sourceInterval:[651,685]},null,[],["app",{sourceInterval:[661,685]},"NonemptyListOf",[["app",{sourceInterval:[676,679]},"Seq",[]],["terminal",{sourceInterval:[681,684]},"|"]]]],Seq:["define",{sourceInterval:[689,704]},null,[],["star",{sourceInterval:[699,704]},["app",{sourceInterval:[699,703]},"Iter",[]]]],Iter_star:["define",{sourceInterval:[719,736]},null,[],["seq",{sourceInterval:[719,727]},["app",{sourceInterval:[719,723]},"Pred",[]],["terminal",{sourceInterval:[724,727]},"*"]]],Iter_plus:["define",{sourceInterval:[743,760]},null,[],["seq",{sourceInterval:[743,751]},["app",{sourceInterval:[743,747]},"Pred",[]],["terminal",{sourceInterval:[748,751]},"+"]]],Iter_opt:["define",{sourceInterval:[767,783]},null,[],["seq",{sourceInterval:[767,775]},["app",{sourceInterval:[767,771]},"Pred",[]],["terminal",{sourceInterval:[772,775]},"?"]]],Iter:["define",{sourceInterval:[708,794]},null,[],["alt",{sourceInterval:[719,794]},["app",{sourceInterval:[719,727]},"Iter_star",[]],["app",{sourceInterval:[743,751]},"Iter_plus",[]],["app",{sourceInterval:[767,775]},"Iter_opt",[]],["app",{sourceInterval:[790,794]},"Pred",[]]]],Pred_not:["define",{sourceInterval:[809,824]},null,[],["seq",{sourceInterval:[809,816]},["terminal",{sourceInterval:[809,812]},"~"],["app",{sourceInterval:[813,816]},"Lex",[]]]],Pred_lookahead:["define",{sourceInterval:[831,852]},null,[],["seq",{sourceInterval:[831,838]},["terminal",{sourceInterval:[831,834]},"&"],["app",{sourceInterval:[835,838]},"Lex",[]]]],Pred:["define",{sourceInterval:[798,862]},null,[],["alt",{sourceInterval:[809,862]},["app",{sourceInterval:[809,816]},"Pred_not",[]],["app",{sourceInterval:[831,838]},"Pred_lookahead",[]],["app",{sourceInterval:[859,862]},"Lex",[]]]],Lex_lex:["define",{sourceInterval:[876,892]},null,[],["seq",{sourceInterval:[876,884]},["terminal",{sourceInterval:[876,879]},"#"],["app",{sourceInterval:[880,884]},"Base",[]]]],Lex:["define",{sourceInterval:[866,903]},null,[],["alt",{sourceInterval:[876,903]},["app",{sourceInterval:[876,884]},"Lex_lex",[]],["app",{sourceInterval:[899,903]},"Base",[]]]],Base_application:["define",{sourceInterval:[918,979]},null,[],["seq",{sourceInterval:[918,963]},["app",{sourceInterval:[918,923]},"ident",[]],["opt",{sourceInterval:[924,931]},["app",{sourceInterval:[924,930]},"Params",[]]],["not",{sourceInterval:[932,963]},["alt",{sourceInterval:[934,962]},["seq",{sourceInterval:[934,948]},["opt",{sourceInterval:[934,944]},["app",{sourceInterval:[934,943]},"ruleDescr",[]]],["terminal",{sourceInterval:[945,948]},"="]],["terminal",{sourceInterval:[951,955]},":="],["terminal",{sourceInterval:[958,962]},"+="]]]]],Base_range:["define",{sourceInterval:[986,1041]},null,[],["seq",{sourceInterval:[986,1022]},["app",{sourceInterval:[986,1001]},"oneCharTerminal",[]],["terminal",{sourceInterval:[1002,1006]},".."],["app",{sourceInterval:[1007,1022]},"oneCharTerminal",[]]]],Base_terminal:["define",{sourceInterval:[1048,1106]},null,[],["app",{sourceInterval:[1048,1056]},"terminal",[]]],Base_paren:["define",{sourceInterval:[1113,1168]},null,[],["seq",{sourceInterval:[1113,1124]},["terminal",{sourceInterval:[1113,1116]},"("],["app",{sourceInterval:[1117,1120]},"Alt",[]],["terminal",{sourceInterval:[1121,1124]},")"]]],Base:["define",{sourceInterval:[907,1168]},null,[],["alt",{sourceInterval:[918,1168]},["app",{sourceInterval:[918,963]},"Base_application",[]],["app",{sourceInterval:[986,1022]},"Base_range",[]],["app",{sourceInterval:[1048,1056]},"Base_terminal",[]],["app",{sourceInterval:[1113,1124]},"Base_paren",[]]]],ruleDescr:["define",{sourceInterval:[1172,1231]},"a rule description",[],["seq",{sourceInterval:[1210,1231]},["terminal",{sourceInterval:[1210,1213]},"("],["app",{sourceInterval:[1214,1227]},"ruleDescrText",[]],["terminal",{sourceInterval:[1228,1231]},")"]]],ruleDescrText:["define",{sourceInterval:[1235,1266]},null,[],["star",{sourceInterval:[1255,1266]},["seq",{sourceInterval:[1256,1264]},["not",{sourceInterval:[1256,1260]},["terminal",{sourceInterval:[1257,1260]},")"]],["app",{sourceInterval:[1261,1264]},"any",[]]]]],caseName:["define",{sourceInterval:[1270,1338]},null,[],["seq",{sourceInterval:[1285,1338]},["terminal",{sourceInterval:[1285,1289]},"--"],["star",{sourceInterval:[1290,1304]},["seq",{sourceInterval:[1291,1302]},["not",{sourceInterval:[1291,1296]},["terminal",{sourceInterval:[1292,1296]},` +`]],["app",{sourceInterval:[1297,1302]},"space",[]]]],["app",{sourceInterval:[1305,1309]},"name",[]],["star",{sourceInterval:[1310,1324]},["seq",{sourceInterval:[1311,1322]},["not",{sourceInterval:[1311,1316]},["terminal",{sourceInterval:[1312,1316]},` +`]],["app",{sourceInterval:[1317,1322]},"space",[]]]],["alt",{sourceInterval:[1326,1337]},["terminal",{sourceInterval:[1326,1330]},` +`],["lookahead",{sourceInterval:[1333,1337]},["terminal",{sourceInterval:[1334,1337]},"}"]]]]],name:["define",{sourceInterval:[1342,1382]},"a name",[],["seq",{sourceInterval:[1363,1382]},["app",{sourceInterval:[1363,1372]},"nameFirst",[]],["star",{sourceInterval:[1373,1382]},["app",{sourceInterval:[1373,1381]},"nameRest",[]]]]],nameFirst:["define",{sourceInterval:[1386,1418]},null,[],["alt",{sourceInterval:[1402,1418]},["terminal",{sourceInterval:[1402,1405]},"_"],["app",{sourceInterval:[1412,1418]},"letter",[]]]],nameRest:["define",{sourceInterval:[1422,1452]},null,[],["alt",{sourceInterval:[1437,1452]},["terminal",{sourceInterval:[1437,1440]},"_"],["app",{sourceInterval:[1447,1452]},"alnum",[]]]],ident:["define",{sourceInterval:[1456,1489]},"an identifier",[],["app",{sourceInterval:[1485,1489]},"name",[]]],terminal:["define",{sourceInterval:[1493,1531]},null,[],["seq",{sourceInterval:[1508,1531]},["terminal",{sourceInterval:[1508,1512]},'"'],["star",{sourceInterval:[1513,1526]},["app",{sourceInterval:[1513,1525]},"terminalChar",[]]],["terminal",{sourceInterval:[1527,1531]},'"']]],oneCharTerminal:["define",{sourceInterval:[1535,1579]},null,[],["seq",{sourceInterval:[1557,1579]},["terminal",{sourceInterval:[1557,1561]},'"'],["app",{sourceInterval:[1562,1574]},"terminalChar",[]],["terminal",{sourceInterval:[1575,1579]},'"']]],terminalChar:["define",{sourceInterval:[1583,1660]},null,[],["alt",{sourceInterval:[1602,1660]},["app",{sourceInterval:[1602,1612]},"escapeChar",[]],["seq",{sourceInterval:[1621,1660]},["not",{sourceInterval:[1621,1626]},["terminal",{sourceInterval:[1622,1626]},"\\"]],["not",{sourceInterval:[1627,1632]},["terminal",{sourceInterval:[1628,1632]},'"']],["not",{sourceInterval:[1633,1638]},["terminal",{sourceInterval:[1634,1638]},` +`]],["range",{sourceInterval:[1639,1660]},"\0","\u{10FFFF}"]]]],escapeChar_backslash:["define",{sourceInterval:[1703,1758]},null,[],["terminal",{sourceInterval:[1703,1709]},"\\\\"]],escapeChar_doubleQuote:["define",{sourceInterval:[1765,1822]},null,[],["terminal",{sourceInterval:[1765,1771]},'\\"']],escapeChar_singleQuote:["define",{sourceInterval:[1829,1886]},null,[],["terminal",{sourceInterval:[1829,1835]},"\\'"]],escapeChar_backspace:["define",{sourceInterval:[1893,1948]},null,[],["terminal",{sourceInterval:[1893,1898]},"\\b"]],escapeChar_lineFeed:["define",{sourceInterval:[1955,2009]},null,[],["terminal",{sourceInterval:[1955,1960]},"\\n"]],escapeChar_carriageReturn:["define",{sourceInterval:[2016,2076]},null,[],["terminal",{sourceInterval:[2016,2021]},"\\r"]],escapeChar_tab:["define",{sourceInterval:[2083,2132]},null,[],["terminal",{sourceInterval:[2083,2088]},"\\t"]],escapeChar_unicodeCodePoint:["define",{sourceInterval:[2139,2243]},null,[],["seq",{sourceInterval:[2139,2221]},["terminal",{sourceInterval:[2139,2145]},"\\u{"],["app",{sourceInterval:[2146,2154]},"hexDigit",[]],["opt",{sourceInterval:[2155,2164]},["app",{sourceInterval:[2155,2163]},"hexDigit",[]]],["opt",{sourceInterval:[2165,2174]},["app",{sourceInterval:[2165,2173]},"hexDigit",[]]],["opt",{sourceInterval:[2188,2197]},["app",{sourceInterval:[2188,2196]},"hexDigit",[]]],["opt",{sourceInterval:[2198,2207]},["app",{sourceInterval:[2198,2206]},"hexDigit",[]]],["opt",{sourceInterval:[2208,2217]},["app",{sourceInterval:[2208,2216]},"hexDigit",[]]],["terminal",{sourceInterval:[2218,2221]},"}"]]],escapeChar_unicodeEscape:["define",{sourceInterval:[2250,2309]},null,[],["seq",{sourceInterval:[2250,2291]},["terminal",{sourceInterval:[2250,2255]},"\\u"],["app",{sourceInterval:[2256,2264]},"hexDigit",[]],["app",{sourceInterval:[2265,2273]},"hexDigit",[]],["app",{sourceInterval:[2274,2282]},"hexDigit",[]],["app",{sourceInterval:[2283,2291]},"hexDigit",[]]]],escapeChar_hexEscape:["define",{sourceInterval:[2316,2371]},null,[],["seq",{sourceInterval:[2316,2339]},["terminal",{sourceInterval:[2316,2321]},"\\x"],["app",{sourceInterval:[2322,2330]},"hexDigit",[]],["app",{sourceInterval:[2331,2339]},"hexDigit",[]]]],escapeChar:["define",{sourceInterval:[1664,2371]},"an escape sequence",[],["alt",{sourceInterval:[1703,2371]},["app",{sourceInterval:[1703,1709]},"escapeChar_backslash",[]],["app",{sourceInterval:[1765,1771]},"escapeChar_doubleQuote",[]],["app",{sourceInterval:[1829,1835]},"escapeChar_singleQuote",[]],["app",{sourceInterval:[1893,1898]},"escapeChar_backspace",[]],["app",{sourceInterval:[1955,1960]},"escapeChar_lineFeed",[]],["app",{sourceInterval:[2016,2021]},"escapeChar_carriageReturn",[]],["app",{sourceInterval:[2083,2088]},"escapeChar_tab",[]],["app",{sourceInterval:[2139,2221]},"escapeChar_unicodeCodePoint",[]],["app",{sourceInterval:[2250,2291]},"escapeChar_unicodeEscape",[]],["app",{sourceInterval:[2316,2339]},"escapeChar_hexEscape",[]]]],space:["extend",{sourceInterval:[2375,2394]},null,[],["app",{sourceInterval:[2387,2394]},"comment",[]]],comment_singleLine:["define",{sourceInterval:[2412,2458]},null,[],["seq",{sourceInterval:[2412,2443]},["terminal",{sourceInterval:[2412,2416]},"//"],["star",{sourceInterval:[2417,2429]},["seq",{sourceInterval:[2418,2427]},["not",{sourceInterval:[2418,2423]},["terminal",{sourceInterval:[2419,2423]},` +`]],["app",{sourceInterval:[2424,2427]},"any",[]]]],["lookahead",{sourceInterval:[2430,2443]},["alt",{sourceInterval:[2432,2442]},["terminal",{sourceInterval:[2432,2436]},` +`],["app",{sourceInterval:[2439,2442]},"end",[]]]]]],comment_multiLine:["define",{sourceInterval:[2465,2501]},null,[],["seq",{sourceInterval:[2465,2487]},["terminal",{sourceInterval:[2465,2469]},"/*"],["star",{sourceInterval:[2470,2482]},["seq",{sourceInterval:[2471,2480]},["not",{sourceInterval:[2471,2476]},["terminal",{sourceInterval:[2472,2476]},"*/"]],["app",{sourceInterval:[2477,2480]},"any",[]]]],["terminal",{sourceInterval:[2483,2487]},"*/"]]],comment:["define",{sourceInterval:[2398,2501]},null,[],["alt",{sourceInterval:[2412,2501]},["app",{sourceInterval:[2412,2443]},"comment_singleLine",[]],["app",{sourceInterval:[2465,2487]},"comment_multiLine",[]]]],tokens:["define",{sourceInterval:[2505,2520]},null,[],["star",{sourceInterval:[2514,2520]},["app",{sourceInterval:[2514,2519]},"token",[]]]],token:["define",{sourceInterval:[2524,2600]},null,[],["alt",{sourceInterval:[2532,2600]},["app",{sourceInterval:[2532,2540]},"caseName",[]],["app",{sourceInterval:[2543,2550]},"comment",[]],["app",{sourceInterval:[2553,2558]},"ident",[]],["app",{sourceInterval:[2561,2569]},"operator",[]],["app",{sourceInterval:[2572,2583]},"punctuation",[]],["app",{sourceInterval:[2586,2594]},"terminal",[]],["app",{sourceInterval:[2597,2600]},"any",[]]]],operator:["define",{sourceInterval:[2604,2669]},null,[],["alt",{sourceInterval:[2615,2669]},["terminal",{sourceInterval:[2615,2619]},"<:"],["terminal",{sourceInterval:[2622,2625]},"="],["terminal",{sourceInterval:[2628,2632]},":="],["terminal",{sourceInterval:[2635,2639]},"+="],["terminal",{sourceInterval:[2642,2645]},"*"],["terminal",{sourceInterval:[2648,2651]},"+"],["terminal",{sourceInterval:[2654,2657]},"?"],["terminal",{sourceInterval:[2660,2663]},"~"],["terminal",{sourceInterval:[2666,2669]},"&"]]],punctuation:["define",{sourceInterval:[2673,2709]},null,[],["alt",{sourceInterval:[2687,2709]},["terminal",{sourceInterval:[2687,2690]},"<"],["terminal",{sourceInterval:[2693,2696]},">"],["terminal",{sourceInterval:[2699,2702]},","],["terminal",{sourceInterval:[2705,2709]},"--"]]]}]),ii=Object.create(V.prototype);function xu(i,e){for(let t in i)if(t===e)return!0;return!1}function xi(i,e,t){let n=new tr,a,l,c,v=!1;return(t||Un).createSemantics().addOperation("visit",{Grammars(g){return g.children.map(f=>f.visit())},Grammar(g,f,y,R,_){let O=g.visit();a=n.newGrammar(O),f.child(0)&&f.child(0).visit(),R.children.map(ee=>ee.visit());let K=a.build();if(K.source=this.source.trimmed(),xu(e,O))throw Xd(K);return e[O]=K,K},SuperGrammar(g,f){let y=f.visit();if(y==="null")a.withSuperGrammar(null);else{if(!e||!xu(e,y))throw Qd(y,e,f.source);a.withSuperGrammar(e[y])}},Rule_define(g,f,y,R,_){l=g.visit(),c=f.children.map(ae=>ae.visit())[0]||[],!a.defaultStartRule&&a.ensureSuperGrammar()!==Ve.ProtoBuiltInRules&&a.withDefaultStartRule(l);let O=_.visit(),K=y.children.map(ae=>ae.visit())[0],ee=this.source.trimmed();return a.define(l,c,O,K,ee)},Rule_override(g,f,y,R){l=g.visit(),c=f.children.map(K=>K.visit())[0]||[];let _=this.source.trimmed();a.ensureSuperGrammarRuleForOverriding(l,_),v=!0;let O=R.visit();return v=!1,a.override(l,c,O,null,_)},Rule_extend(g,f,y,R){l=g.visit(),c=f.children.map(K=>K.visit())[0]||[];let _=R.visit(),O=this.source.trimmed();return a.extend(l,c,_,null,O)},RuleBody(g,f){return n.alt(...f.visit()).withSource(this.source)},OverrideRuleBody(g,f){let y=f.visit(),R=y.indexOf(ii);if(R>=0){let _=y.slice(0,R),O=y.slice(R+1);return O.forEach(K=>{if(K===ii)throw cf(K)}),new Ft(a.superGrammar,l,_,O).withSource(this.source)}else return n.alt(...y).withSource(this.source)},Formals(g,f,y){return f.visit()},Params(g,f,y){return f.visit()},Alt(g){return n.alt(...g.visit()).withSource(this.source)},TopLevelTerm_inline(g,f){let y=l+"_"+f.visit(),R=g.visit(),_=this.source.trimmed(),O=!(a.superGrammar&&a.superGrammar.rules[y]);v&&!O?a.override(y,c,R,null,_):a.define(y,c,R,null,_);let K=c.map(ee=>n.app(ee));return n.app(y,K).withSource(R.source)},OverrideTopLevelTerm_superSplice(g){return ii},Seq(g){return n.seq(...g.children.map(f=>f.visit())).withSource(this.source)},Iter_star(g,f){return n.star(g.visit()).withSource(this.source)},Iter_plus(g,f){return n.plus(g.visit()).withSource(this.source)},Iter_opt(g,f){return n.opt(g.visit()).withSource(this.source)},Pred_not(g,f){return n.not(f.visit()).withSource(this.source)},Pred_lookahead(g,f){return n.lookahead(f.visit()).withSource(this.source)},Lex_lex(g,f){return n.lex(f.visit()).withSource(this.source)},Base_application(g,f){let y=f.children.map(R=>R.visit())[0]||[];return n.app(g.visit(),y).withSource(this.source)},Base_range(g,f,y){return n.range(g.visit(),y.visit()).withSource(this.source)},Base_terminal(g){return n.terminal(g.visit()).withSource(this.source)},Base_paren(g,f,y){return f.visit()},ruleDescr(g,f,y){return f.visit()},ruleDescrText(g){return this.sourceString.trim()},caseName(g,f,y,R,_){return y.visit()},name(g,f){return this.sourceString},nameFirst(g){},nameRest(g){},terminal(g,f,y){return f.children.map(R=>R.visit()).join("")},oneCharTerminal(g,f,y){return f.visit()},escapeChar(g){try{return Eu(this.sourceString)}catch(f){throw f instanceof RangeError&&f.message.startsWith("Invalid code point ")?pf(g):f}},NonemptyListOf(g,f,y){return[g.visit()].concat(y.children.map(R=>R.visit()))},EmptyListOf(){return[]},_terminal(){return this.sourceString}})(i).visit()}var Nf=qn(["grammar",{source:`OperationsAndAttributes { + + AttributeSignature = + name + + OperationSignature = + name Formals? + + Formals + = "(" ListOf ")" + + name (a name) + = nameFirst nameRest* + + nameFirst + = "_" + | letter + + nameRest + = "_" + | alnum + +}`},"OperationsAndAttributes",null,"AttributeSignature",{AttributeSignature:["define",{sourceInterval:[29,58]},null,[],["app",{sourceInterval:[54,58]},"name",[]]],OperationSignature:["define",{sourceInterval:[62,100]},null,[],["seq",{sourceInterval:[87,100]},["app",{sourceInterval:[87,91]},"name",[]],["opt",{sourceInterval:[92,100]},["app",{sourceInterval:[92,99]},"Formals",[]]]]],Formals:["define",{sourceInterval:[104,143]},null,[],["seq",{sourceInterval:[118,143]},["terminal",{sourceInterval:[118,121]},"("],["app",{sourceInterval:[122,139]},"ListOf",[["app",{sourceInterval:[129,133]},"name",[]],["terminal",{sourceInterval:[135,138]},","]]],["terminal",{sourceInterval:[140,143]},")"]]],name:["define",{sourceInterval:[147,187]},"a name",[],["seq",{sourceInterval:[168,187]},["app",{sourceInterval:[168,177]},"nameFirst",[]],["star",{sourceInterval:[178,187]},["app",{sourceInterval:[178,186]},"nameRest",[]]]]],nameFirst:["define",{sourceInterval:[191,223]},null,[],["alt",{sourceInterval:[207,223]},["terminal",{sourceInterval:[207,210]},"_"],["app",{sourceInterval:[217,223]},"letter",[]]]],nameRest:["define",{sourceInterval:[227,257]},null,[],["alt",{sourceInterval:[242,257]},["terminal",{sourceInterval:[242,245]},"_"],["app",{sourceInterval:[252,257]},"alnum",[]]]]}]);Tf(Ve.BuiltInRules);Vf(Nf);function Tf(i){let e={empty(){return this.iteration()},nonEmpty(t,n,a){return this.iteration([t].concat(a.children))}};Te.BuiltInSemantics=Te.createSemantics(i,null).addOperation("asIteration",{emptyListOf:e.empty,nonemptyListOf:e.nonEmpty,EmptyListOf:e.empty,NonemptyListOf:e.nonEmpty})}function Vf(i){Te.prototypeGrammarSemantics=i.createSemantics().addOperation("parse",{AttributeSignature(e){return{name:e.parse(),formals:[]}},OperationSignature(e,t){return{name:e.parse(),formals:t.children.map(n=>n.parse())[0]||[]}},Formals(e,t,n){return t.asIteration().children.map(a=>a.parse())},name(e,t){return this.sourceString}}),Te.prototypeGrammar=i}function Lf(i){let e=0,t=[0],n=()=>t[t.length-1],a={},l=/( *).*(?:$|\r?\n|\r)/g,c;for(;(c=l.exec(i))!=null;){let[v,h]=c;if(v.length===0)break;let d=h.length,g=n(),f=e+d;if(d>g)t.push(d),a[f]=1;else if(d1&&(a[e]=1-t.length),a}var qu="an indented block",Uu="a dedent",bu=1114111+1,fi=class extends Xt{constructor(e){super(e.input),this.state=e}_indentationAt(e){return this.state.userData[e]||0}atEnd(){return super.atEnd()&&this._indentationAt(this.pos)===0}next(){if(this._indentationAt(this.pos)!==0){this.examinedLength=Math.max(this.examinedLength,this.pos);return}return super.next()}nextCharCode(){return this._indentationAt(this.pos)!==0?(this.examinedLength=Math.max(this.examinedLength,this.pos),bu):super.nextCharCode()}nextCodePoint(){return this._indentationAt(this.pos)!==0?(this.examinedLength=Math.max(this.examinedLength,this.pos),bu):super.nextCodePoint()}},Cn=class extends V{constructor(e=!0){super(),this.isIndent=e}allowsSkippingPrecedingSpace(){return!0}eval(e){let{inputStream:t}=e,n=e.userData;e.doNotMemoize=!0;let a=t.pos,l=this.isIndent?1:-1;return(n[a]||0)*l>0?(e.userData=Object.create(n),e.userData[a]-=l,e.pushBinding(new yt(0),a),!0):(e.processFailure(a,this),!1)}getArity(){return 1}_assertAllApplicationsAreValid(e,t){}_isNullable(e,t){return!1}assertChoicesHaveUniformArity(e){}assertIteratedExprsAreNotNullable(e){}introduceParams(e){return this}substituteParams(e){return this}toString(){return this.isIndent?"indent":"dedent"}toDisplayString(){return this.toString()}toFailure(e){let t=this.isIndent?qu:Uu;return new Le(this,t,"description")}},kf=new z("indent"),Cf=new z("dedent"),Ff=new Ft(Si,"any",[kf,Cf],[]),Bu=new tr().newGrammar("IndentationSensitive").withSuperGrammar(Si).define("indent",[],new Cn(!0),qu,void 0,!0).define("dedent",[],new Cn(!1),Uu,void 0,!0).extend("any",[],Ff,"any character",void 0).build();Object.assign(Bu,{_matchStateInitializer(i){i.userData=Lf(i.input),i.inputStream=new fi(i)},supportsIncrementalParsing:!1});var qf="17.1.0";Ve.initApplicationParser(Un,xi);var Uf=i=>!!i.constructor&&typeof i.constructor.isBuffer=="function"&&i.constructor.isBuffer(i);function Bf(i,e){let t=Un.match(i,"Grammars");if(t.failed())throw Jd(t);return xi(t,e)}function Yf(i,e){let t=Yu(i,e),n=Object.keys(t);if(n.length===0)throw new Error("Missing grammar definition");if(n.length>1){let l=t[n[1]].source;throw new Error(yi(l.sourceString,l.startIdx)+"Found more than one grammar definition -- use ohm.grammars() instead.")}return t[n[0]]}function Yu(i,e){let t=Object.create(e||{});if(typeof i!="string")if(Uf(i))i=i.toString();else throw new TypeError("Expected string as first argument, got "+Ii(i));return Bf(i,t),t}ot.ExperimentalIndentationSensitive=Bu;ot._buildGrammar=xi;ot.grammar=Yf;ot.grammars=Yu;ot.makeRecipe=qn;ot.ohmGrammar=Un;ot.pexprs=Ef;ot.version=qf});var Hu=E((v2,Gu)=>{"use strict";var{makeRecipe:Gf}=Qe(),Hf=Gf(["grammar",{source:`BasicArithmetic {\r + Expression\r + = LogicalShift\r +\r + LogicalShift\r + = LogicalShift "<<" LogicalShift -- left\r + | LogicalShift ">>" LogicalShift -- right\r + | AS \r +\r + // Addition or Subtraction\r + AS\r + = AS add MD -- addition\r + | AS subtract MD -- subtraction\r + | MD\r +\r + // Multiply or Divide\r + MD\r + = MD multiply E -- multiplication\r + | MD divide E -- division\r + | MD modulo E -- modulo\r + | E\r +\r + // Exponent\r + E\r + = P exponent E -- exponent\r + | P\r +\r + // Parenthesis\r + P\r + = "(" Expression ")" -- parenthesis\r + | Primitive\r + \r + Primitive\r + = "+" Primitive -- positive\r + | "-" Primitive -- negative\r + | constant\r + | hex\r + | number\r + \r + // Lexical Rules\r + add \r + = "+"\r + | caseInsensitive<"plus">\r + | caseInsensitive<"add">\r + | caseInsensitive<"and">\r + \r + subtract \r + = "-"\r + | caseInsensitive<"minus">\r + | caseInsensitive<"subtract">\r + | caseInsensitive<"remove">\r + | caseInsensitive<"take">\r + \r + multiply \r + = "*"\r + | "\\\\*" // Escaped \\* for markdown\r + | "\\u{00D7}" // \xD7\r + | caseInsensitive<"x">\r + | caseInsensitive<"times by">\r + | caseInsensitive<"times">\r + | caseInsensitive<"multiply by">\r + | caseInsensitive<"multiply">\r + \r + divide\r + = "/"\r + | "\\u{00F7}" // \xF7\r + | caseInsensitive<"divide by">\r + | caseInsensitive<"divide">\r +\r + modulo\r + = "%"\r + | caseInsensitive<"modulo">\r + | caseInsensitive<"mod">\r +\r + exponent\r + = "^"\r + | caseInsensitive<"to the power of">\r + | caseInsensitive<"power of">\r + | caseInsensitive<"exponent">\r + | caseInsensitive<"prime">\r +\r + constant \r + = caseInsensitive<"PI"> \r + | caseInsensitive<"E">\r +\r + // Lazy: It will match anything like 1214.200.2442,200 the visitor decides how to interpret\r + number\r + = (separator? digit)+\r +\r + // The separator can be a comma or a period, detected in the visitor\r + separator\r + = "." | ","\r +\r + whole\r + = digit+\r +\r + hex\r + = "0x" hexDigit+\r + | hexDigit+ "h"\r +}`},"BasicArithmetic",null,"Expression",{Expression:["define",{sourceInterval:[21,51]},null,[],["app",{sourceInterval:[39,51]},"LogicalShift",[]]],LogicalShift_left:["define",{sourceInterval:[77,115]},null,[],["seq",{sourceInterval:[77,107]},["app",{sourceInterval:[77,89]},"LogicalShift",[]],["terminal",{sourceInterval:[90,94]},"<<"],["app",{sourceInterval:[95,107]},"LogicalShift",[]]]],LogicalShift_right:["define",{sourceInterval:[123,162]},null,[],["seq",{sourceInterval:[123,153]},["app",{sourceInterval:[123,135]},"LogicalShift",[]],["terminal",{sourceInterval:[136,140]},">>"],["app",{sourceInterval:[141,153]},"LogicalShift",[]]]],LogicalShift:["define",{sourceInterval:[57,172]},null,[],["alt",{sourceInterval:[77,172]},["app",{sourceInterval:[77,107]},"LogicalShift_left",[]],["app",{sourceInterval:[123,153]},"LogicalShift_right",[]],["app",{sourceInterval:[170,172]},"AS",[]]]],AS_addition:["define",{sourceInterval:[219,241]},null,[],["seq",{sourceInterval:[219,228]},["app",{sourceInterval:[219,221]},"AS",[]],["app",{sourceInterval:[222,225]},"add",[]],["app",{sourceInterval:[226,228]},"MD",[]]]],AS_subtraction:["define",{sourceInterval:[249,279]},null,[],["seq",{sourceInterval:[249,263]},["app",{sourceInterval:[249,251]},"AS",[]],["app",{sourceInterval:[252,260]},"subtract",[]],["app",{sourceInterval:[261,263]},"MD",[]]]],AS:["define",{sourceInterval:[209,289]},null,[],["alt",{sourceInterval:[219,289]},["app",{sourceInterval:[219,228]},"AS_addition",[]],["app",{sourceInterval:[249,263]},"AS_subtraction",[]],["app",{sourceInterval:[287,289]},"MD",[]]]],MD_multiplication:["define",{sourceInterval:[330,362]},null,[],["seq",{sourceInterval:[330,343]},["app",{sourceInterval:[330,332]},"MD",[]],["app",{sourceInterval:[333,341]},"multiply",[]],["app",{sourceInterval:[342,343]},"E",[]]]],MD_division:["define",{sourceInterval:[370,394]},null,[],["seq",{sourceInterval:[370,381]},["app",{sourceInterval:[370,372]},"MD",[]],["app",{sourceInterval:[373,379]},"divide",[]],["app",{sourceInterval:[380,381]},"E",[]]]],MD_modulo:["define",{sourceInterval:[402,424]},null,[],["seq",{sourceInterval:[402,413]},["app",{sourceInterval:[402,404]},"MD",[]],["app",{sourceInterval:[405,411]},"modulo",[]],["app",{sourceInterval:[412,413]},"E",[]]]],MD:["define",{sourceInterval:[320,433]},null,[],["alt",{sourceInterval:[330,433]},["app",{sourceInterval:[330,343]},"MD_multiplication",[]],["app",{sourceInterval:[370,381]},"MD_division",[]],["app",{sourceInterval:[402,413]},"MD_modulo",[]],["app",{sourceInterval:[432,433]},"E",[]]]],E_exponent:["define",{sourceInterval:[463,488]},null,[],["seq",{sourceInterval:[463,475]},["app",{sourceInterval:[463,464]},"P",[]],["app",{sourceInterval:[465,473]},"exponent",[]],["app",{sourceInterval:[474,475]},"E",[]]]],E:["define",{sourceInterval:[454,497]},null,[],["alt",{sourceInterval:[463,497]},["app",{sourceInterval:[463,475]},"E_exponent",[]],["app",{sourceInterval:[496,497]},"P",[]]]],P_parenthesis:["define",{sourceInterval:[530,564]},null,[],["seq",{sourceInterval:[530,548]},["terminal",{sourceInterval:[530,533]},"("],["app",{sourceInterval:[534,544]},"Expression",[]],["terminal",{sourceInterval:[545,548]},")"]]],P:["define",{sourceInterval:[521,581]},null,[],["alt",{sourceInterval:[530,581]},["app",{sourceInterval:[530,548]},"P_parenthesis",[]],["app",{sourceInterval:[572,581]},"Primitive",[]]]],Primitive_positive:["define",{sourceInterval:[608,633]},null,[],["seq",{sourceInterval:[608,621]},["terminal",{sourceInterval:[608,611]},"+"],["app",{sourceInterval:[612,621]},"Primitive",[]]]],Primitive_negative:["define",{sourceInterval:[641,666]},null,[],["seq",{sourceInterval:[641,654]},["terminal",{sourceInterval:[641,644]},"-"],["app",{sourceInterval:[645,654]},"Primitive",[]]]],Primitive:["define",{sourceInterval:[591,707]},null,[],["alt",{sourceInterval:[608,707]},["app",{sourceInterval:[608,621]},"Primitive_positive",[]],["app",{sourceInterval:[641,654]},"Primitive_negative",[]],["app",{sourceInterval:[674,682]},"constant",[]],["app",{sourceInterval:[690,693]},"hex",[]],["app",{sourceInterval:[701,707]},"number",[]]]],add:["define",{sourceInterval:[734,838]},null,[],["alt",{sourceInterval:[745,838]},["terminal",{sourceInterval:[745,748]},"+"],["app",{sourceInterval:[756,779]},"caseInsensitive",[["terminal",{sourceInterval:[772,778]},"plus"]]],["app",{sourceInterval:[786,808]},"caseInsensitive",[["terminal",{sourceInterval:[802,807]},"add"]]],["app",{sourceInterval:[816,838]},"caseInsensitive",[["terminal",{sourceInterval:[832,837]},"and"]]]]],subtract:["define",{sourceInterval:[848,999]},null,[],["alt",{sourceInterval:[865,999]},["terminal",{sourceInterval:[865,868]},"-"],["app",{sourceInterval:[876,900]},"caseInsensitive",[["terminal",{sourceInterval:[892,899]},"minus"]]],["app",{sourceInterval:[908,935]},"caseInsensitive",[["terminal",{sourceInterval:[924,934]},"subtract"]]],["app",{sourceInterval:[943,968]},"caseInsensitive",[["terminal",{sourceInterval:[959,967]},"remove"]]],["app",{sourceInterval:[976,999]},"caseInsensitive",[["terminal",{sourceInterval:[992,998]},"take"]]]]],multiply:["define",{sourceInterval:[1011,1262]},null,[],["alt",{sourceInterval:[1028,1262]},["terminal",{sourceInterval:[1028,1031]},"*"],["terminal",{sourceInterval:[1039,1044]},"\\*"],["terminal",{sourceInterval:[1079,1089]},"\xD7"],["app",{sourceInterval:[1102,1122]},"caseInsensitive",[["terminal",{sourceInterval:[1118,1121]},"x"]]],["app",{sourceInterval:[1130,1157]},"caseInsensitive",[["terminal",{sourceInterval:[1146,1156]},"times by"]]],["app",{sourceInterval:[1165,1189]},"caseInsensitive",[["terminal",{sourceInterval:[1181,1188]},"times"]]],["app",{sourceInterval:[1197,1227]},"caseInsensitive",[["terminal",{sourceInterval:[1213,1226]},"multiply by"]]],["app",{sourceInterval:[1235,1262]},"caseInsensitive",[["terminal",{sourceInterval:[1251,1261]},"multiply"]]]]],divide:["define",{sourceInterval:[1274,1383]},null,[],["alt",{sourceInterval:[1288,1383]},["terminal",{sourceInterval:[1288,1291]},"/"],["terminal",{sourceInterval:[1299,1309]},"\xF7"],["app",{sourceInterval:[1322,1350]},"caseInsensitive",[["terminal",{sourceInterval:[1338,1349]},"divide by"]]],["app",{sourceInterval:[1358,1383]},"caseInsensitive",[["terminal",{sourceInterval:[1374,1382]},"divide"]]]]],modulo:["define",{sourceInterval:[1389,1469]},null,[],["alt",{sourceInterval:[1403,1469]},["terminal",{sourceInterval:[1403,1406]},"%"],["app",{sourceInterval:[1414,1439]},"caseInsensitive",[["terminal",{sourceInterval:[1430,1438]},"modulo"]]],["app",{sourceInterval:[1447,1469]},"caseInsensitive",[["terminal",{sourceInterval:[1463,1468]},"mod"]]]]],exponent:["define",{sourceInterval:[1475,1638]},null,[],["alt",{sourceInterval:[1491,1638]},["terminal",{sourceInterval:[1491,1494]},"^"],["app",{sourceInterval:[1502,1536]},"caseInsensitive",[["terminal",{sourceInterval:[1518,1535]},"to the power of"]]],["app",{sourceInterval:[1544,1571]},"caseInsensitive",[["terminal",{sourceInterval:[1560,1570]},"power of"]]],["app",{sourceInterval:[1579,1606]},"caseInsensitive",[["terminal",{sourceInterval:[1595,1605]},"exponent"]]],["app",{sourceInterval:[1614,1638]},"caseInsensitive",[["terminal",{sourceInterval:[1630,1637]},"prime"]]]]],constant:["define",{sourceInterval:[1644,1711]},null,[],["alt",{sourceInterval:[1661,1711]},["app",{sourceInterval:[1661,1682]},"caseInsensitive",[["terminal",{sourceInterval:[1677,1681]},"PI"]]],["app",{sourceInterval:[1691,1711]},"caseInsensitive",[["terminal",{sourceInterval:[1707,1710]},"E"]]]]],number:["define",{sourceInterval:[1812,1845]},null,[],["plus",{sourceInterval:[1826,1845]},["seq",{sourceInterval:[1827,1843]},["opt",{sourceInterval:[1827,1837]},["app",{sourceInterval:[1827,1836]},"separator",[]]],["app",{sourceInterval:[1838,1843]},"digit",[]]]]],separator:["define",{sourceInterval:[1923,1949]},null,[],["alt",{sourceInterval:[1940,1949]},["terminal",{sourceInterval:[1940,1943]},"."],["terminal",{sourceInterval:[1946,1949]},","]]],whole:["define",{sourceInterval:[1955,1974]},null,[],["plus",{sourceInterval:[1968,1974]},["app",{sourceInterval:[1968,1973]},"digit",[]]]],hex:["define",{sourceInterval:[1980,2026]},null,[],["alt",{sourceInterval:[1991,2026]},["seq",{sourceInterval:[1991,2005]},["terminal",{sourceInterval:[1991,1995]},"0x"],["plus",{sourceInterval:[1996,2005]},["app",{sourceInterval:[1996,2004]},"hexDigit",[]]]],["seq",{sourceInterval:[2013,2026]},["plus",{sourceInterval:[2013,2022]},["app",{sourceInterval:[2013,2021]},"hexDigit",[]]],["terminal",{sourceInterval:[2023,2026]},"h"]]]]}]);Gu.exports=Hf});var nc=E((p3,rc)=>{"use strict";var{makeRecipe:Wf}=Qe(),zf=Wf(["grammar",{source:`BigIntArithmetic {\r + Expression\r + = Bitwise\r +\r + // Potentially bug here AS may need to be Bitwise operator Bitwise\r + Bitwise\r + = Bitwise "<<" AS -- leftShift\r + | Bitwise ">>>" AS -- unsignedRightShift\r + | Bitwise ">>" AS -- rightShift\r + | Bitwise "&" AS -- AND\r + | Bitwise "^" AS -- XOR\r + | Bitwise "|" AS -- OR\r + | AS\r +\r + // Addition or Subtraction\r + AS\r + = AS add MD -- addition\r + | AS subtract MD -- subtraction\r + | MD\r +\r + // Multiply or Divide\r + MD\r + = MD multiply E -- multiplication\r + | MD divide E -- division\r + | MD remainder E -- remainder\r + | E\r +\r + // Exponent\r + E\r + = P exponent E -- exponent\r + | P\r +\r + // Parenthesis\r + P\r + = "(" Expression ")" -- parenthesis\r + | Primitive\r +\r + Primitive\r + = hex\r + | binary\r + | bigInteger\r +\r + // Lexical Rules\r + add \r + = "+"\r +\r + subtract \r + = "-"\r + \r + multiply \r + = "*"\r + | "\\\\*" // Escaped \\* for markdown\r + | "\\u{00D7}" // \xD7\r + | caseInsensitive<"x">\r + \r + divide\r + = "/"\r + | "\\u{00F7}" // \xF7\r +\r + remainder\r + = "%"\r +\r + exponent\r + = "**"\r +\r + binary\r + = "0b" binaryDigit+\r +\r + binaryDigit\r + = "0" | "1"\r +\r + bigInteger\r + = digit+\r +\r + hex\r + = "0x" hexDigit+\r + | hexDigit+ "h"\r +}`},"BigIntArithmetic",null,"Expression",{Expression:["define",{sourceInterval:[24,53]},null,[],["app",{sourceInterval:[46,53]},"Bitwise",[]]],Bitwise_leftShift:["define",{sourceInterval:[152,180]},null,[],["seq",{sourceInterval:[152,167]},["app",{sourceInterval:[152,159]},"Bitwise",[]],["terminal",{sourceInterval:[160,164]},"<<"],["app",{sourceInterval:[165,167]},"AS",[]]]],Bitwise_unsignedRightShift:["define",{sourceInterval:[192,230]},null,[],["seq",{sourceInterval:[192,208]},["app",{sourceInterval:[192,199]},"Bitwise",[]],["terminal",{sourceInterval:[200,205]},">>>"],["app",{sourceInterval:[206,208]},"AS",[]]]],Bitwise_rightShift:["define",{sourceInterval:[242,271]},null,[],["seq",{sourceInterval:[242,257]},["app",{sourceInterval:[242,249]},"Bitwise",[]],["terminal",{sourceInterval:[250,254]},">>"],["app",{sourceInterval:[255,257]},"AS",[]]]],Bitwise_AND:["define",{sourceInterval:[283,304]},null,[],["seq",{sourceInterval:[283,297]},["app",{sourceInterval:[283,290]},"Bitwise",[]],["terminal",{sourceInterval:[291,294]},"&"],["app",{sourceInterval:[295,297]},"AS",[]]]],Bitwise_XOR:["define",{sourceInterval:[316,337]},null,[],["seq",{sourceInterval:[316,330]},["app",{sourceInterval:[316,323]},"Bitwise",[]],["terminal",{sourceInterval:[324,327]},"^"],["app",{sourceInterval:[328,330]},"AS",[]]]],Bitwise_OR:["define",{sourceInterval:[349,369]},null,[],["seq",{sourceInterval:[349,363]},["app",{sourceInterval:[349,356]},"Bitwise",[]],["terminal",{sourceInterval:[357,360]},"|"],["app",{sourceInterval:[361,363]},"AS",[]]]],Bitwise:["define",{sourceInterval:[133,383]},null,[],["alt",{sourceInterval:[152,383]},["app",{sourceInterval:[152,167]},"Bitwise_leftShift",[]],["app",{sourceInterval:[192,208]},"Bitwise_unsignedRightShift",[]],["app",{sourceInterval:[242,257]},"Bitwise_rightShift",[]],["app",{sourceInterval:[283,297]},"Bitwise_AND",[]],["app",{sourceInterval:[316,330]},"Bitwise_XOR",[]],["app",{sourceInterval:[349,363]},"Bitwise_OR",[]],["app",{sourceInterval:[381,383]},"AS",[]]]],AS_addition:["define",{sourceInterval:[437,459]},null,[],["seq",{sourceInterval:[437,446]},["app",{sourceInterval:[437,439]},"AS",[]],["app",{sourceInterval:[440,443]},"add",[]],["app",{sourceInterval:[444,446]},"MD",[]]]],AS_subtraction:["define",{sourceInterval:[471,501]},null,[],["seq",{sourceInterval:[471,485]},["app",{sourceInterval:[471,473]},"AS",[]],["app",{sourceInterval:[474,482]},"subtract",[]],["app",{sourceInterval:[483,485]},"MD",[]]]],AS:["define",{sourceInterval:[423,515]},null,[],["alt",{sourceInterval:[437,515]},["app",{sourceInterval:[437,446]},"AS_addition",[]],["app",{sourceInterval:[471,485]},"AS_subtraction",[]],["app",{sourceInterval:[513,515]},"MD",[]]]],MD_multiplication:["define",{sourceInterval:[564,596]},null,[],["seq",{sourceInterval:[564,577]},["app",{sourceInterval:[564,566]},"MD",[]],["app",{sourceInterval:[567,575]},"multiply",[]],["app",{sourceInterval:[576,577]},"E",[]]]],MD_division:["define",{sourceInterval:[608,632]},null,[],["seq",{sourceInterval:[608,619]},["app",{sourceInterval:[608,610]},"MD",[]],["app",{sourceInterval:[611,617]},"divide",[]],["app",{sourceInterval:[618,619]},"E",[]]]],MD_remainder:["define",{sourceInterval:[644,672]},null,[],["seq",{sourceInterval:[644,658]},["app",{sourceInterval:[644,646]},"MD",[]],["app",{sourceInterval:[647,656]},"remainder",[]],["app",{sourceInterval:[657,658]},"E",[]]]],MD:["define",{sourceInterval:[550,685]},null,[],["alt",{sourceInterval:[564,685]},["app",{sourceInterval:[564,577]},"MD_multiplication",[]],["app",{sourceInterval:[608,619]},"MD_division",[]],["app",{sourceInterval:[644,658]},"MD_remainder",[]],["app",{sourceInterval:[684,685]},"E",[]]]],E_exponent:["define",{sourceInterval:[723,748]},null,[],["seq",{sourceInterval:[723,735]},["app",{sourceInterval:[723,724]},"P",[]],["app",{sourceInterval:[725,733]},"exponent",[]],["app",{sourceInterval:[734,735]},"E",[]]]],E:["define",{sourceInterval:[710,761]},null,[],["alt",{sourceInterval:[723,761]},["app",{sourceInterval:[723,735]},"E_exponent",[]],["app",{sourceInterval:[760,761]},"P",[]]]],P_parenthesis:["define",{sourceInterval:[802,836]},null,[],["seq",{sourceInterval:[802,820]},["terminal",{sourceInterval:[802,805]},"("],["app",{sourceInterval:[806,816]},"Expression",[]],["terminal",{sourceInterval:[817,820]},")"]]],P:["define",{sourceInterval:[789,857]},null,[],["alt",{sourceInterval:[802,857]},["app",{sourceInterval:[802,820]},"P_parenthesis",[]],["app",{sourceInterval:[848,857]},"Primitive",[]]]],Primitive:["define",{sourceInterval:[865,929]},null,[],["alt",{sourceInterval:[886,929]},["app",{sourceInterval:[886,889]},"hex",[]],["app",{sourceInterval:[901,907]},"binary",[]],["app",{sourceInterval:[919,929]},"bigInteger",[]]]],add:["define",{sourceInterval:[959,978]},null,[],["terminal",{sourceInterval:[975,978]},"+"]],subtract:["define",{sourceInterval:[986,1010]},null,[],["terminal",{sourceInterval:[1007,1010]},"-"]],multiply:["define",{sourceInterval:[1026,1153]},null,[],["alt",{sourceInterval:[1047,1153]},["terminal",{sourceInterval:[1047,1050]},"*"],["terminal",{sourceInterval:[1062,1067]},"\\*"],["terminal",{sourceInterval:[1106,1116]},"\xD7"],["app",{sourceInterval:[1133,1153]},"caseInsensitive",[["terminal",{sourceInterval:[1149,1152]},"x"]]]]],divide:["define",{sourceInterval:[1169,1212]},null,[],["alt",{sourceInterval:[1187,1212]},["terminal",{sourceInterval:[1187,1190]},"/"],["terminal",{sourceInterval:[1202,1212]},"\xF7"]]],remainder:["define",{sourceInterval:[1225,1249]},null,[],["terminal",{sourceInterval:[1246,1249]},"%"]],exponent:["define",{sourceInterval:[1257,1281]},null,[],["terminal",{sourceInterval:[1277,1281]},"**"]],binary:["define",{sourceInterval:[1289,1324]},null,[],["seq",{sourceInterval:[1307,1324]},["terminal",{sourceInterval:[1307,1311]},"0b"],["plus",{sourceInterval:[1312,1324]},["app",{sourceInterval:[1312,1323]},"binaryDigit",[]]]]],binaryDigit:["define",{sourceInterval:[1332,1364]},null,[],["alt",{sourceInterval:[1355,1364]},["terminal",{sourceInterval:[1355,1358]},"0"],["terminal",{sourceInterval:[1361,1364]},"1"]]],bigInteger:["define",{sourceInterval:[1372,1400]},null,[],["plus",{sourceInterval:[1394,1400]},["app",{sourceInterval:[1394,1399]},"digit",[]]]],hex:["define",{sourceInterval:[1408,1462]},null,[],["alt",{sourceInterval:[1423,1462]},["seq",{sourceInterval:[1423,1437]},["terminal",{sourceInterval:[1423,1427]},"0x"],["plus",{sourceInterval:[1428,1437]},["app",{sourceInterval:[1428,1436]},"hexDigit",[]]]],["seq",{sourceInterval:[1449,1462]},["plus",{sourceInterval:[1449,1458]},["app",{sourceInterval:[1449,1457]},"hexDigit",[]]],["terminal",{sourceInterval:[1459,1462]},"h"]]]]}]);rc.exports=zf});var ic=E((_3,sc)=>{"use strict";var{makeRecipe:jf}=Qe(),$f=jf(["grammar",{source:`Datetime {\r + Expression\r + = Addition\r + | Subtraction\r + | TimeUnitUntilDate\r + | TimeUnitSinceDate\r + | Primitive\r +\r + Addition\r + = Primitive add Timespan\r +\r + Subtraction\r + = Primitive subtract Timespan\r + \r + Primitive\r + = Datetime\r + | Now\r + | Today\r + | Tomorrow\r + | Yesterday\r + | NextDayOfWeek\r + | LastDayOfWeek\r +\r + Timespan\r + = number unitsOfTime\r +\r + Now \r + = now\r +\r + Today \r + = today\r +\r + Tomorrow \r + = tomorrow\r +\r + Yesterday \r + = yesterday\r + \r + // e.g. 1/10/23 or 01.10.2023\r + Datetime \r + = datetimeIso8601\r + | datetimeFormatEuropeanOrUs\r + \r + // e.g. Next Monday\r + NextDayOfWeek\r + = caseInsensitive<"next"> dayOfWeek\r + \r + // e.g. Last Tuesday\r + LastDayOfWeek\r + = caseInsensitive<"last"> dayOfWeek\r + \r + TimeUnitUntilDate\r + = (year | month | week | day) until Datetime\r + \r + TimeUnitSinceDate\r + = (year | month | week | day) since Datetime\r +\r + // Lexical Rules\r + oneDigit\r + = digit\r +\r + twoDigit \r + = digit digit\r + \r + fourDigit\r + = digit digit digit digit\r +\r + time\r + = (twoDigit | oneDigit) ":" (twoDigit | oneDigit) ":" (twoDigit | oneDigit)\r +\r + datetimeIso8601\r + = fourDigit "-" twoDigit "-" twoDigit ("T" | space)? (timeWithMilliseconds | timeWithSeconds)? ("Z" | timeZoneColon | timeZoneHours)?\r +\r + timeWithMilliseconds\r + = twoDigit ":" twoDigit ":" twoDigit "." digit+\r + \r + timeWithSeconds\r + = twoDigit ":" twoDigit ":" twoDigit\r +\r + datetimeFormatEuropeanOrUs\r + = (twoDigit | oneDigit) "/" (twoDigit | oneDigit) "/" (fourDigit | twoDigit) time?\r + | (twoDigit | oneDigit) "-" (twoDigit | oneDigit) "-" (fourDigit | twoDigit) time?\r + | (twoDigit | oneDigit) "." (twoDigit | oneDigit) "." (fourDigit | twoDigit) time?\r + \r + timeZoneColon\r + = "+" digit+ ":" digit+\r + | "-" digit+ ":" digit+\r + \r + timeZoneHours\r + = "+" fourDigit\r +\r + add \r + = "+"\r + | caseInsensitive<"add">\r + | caseInsensitive<"plus">\r +\r + subtract \r + = "-"\r + | caseInsensitive<"take">\r + | caseInsensitive<"minus">\r + | caseInsensitive<"subtract">\r +\r + now\r + = caseInsensitive<"now">\r +\r + today\r + = caseInsensitive<"today">\r +\r + tomorrow\r + = caseInsensitive<"tomorrow">\r +\r + yesterday\r + = caseInsensitive<"yesterday">\r +\r + dayOfWeek\r + = monday\r + | tuesday\r + | wednesday\r + | thursday\r + | friday\r + | saturday\r + | sunday\r +\r + monday\r + = caseInsensitive<"monday">\r +\r + tuesday\r + = caseInsensitive<"tuesday">\r +\r + wednesday\r + = caseInsensitive<"wednesday">\r +\r + thursday\r + = caseInsensitive<"thursday">\r + \r + friday\r + = caseInsensitive<"friday">\r +\r + saturday\r + = caseInsensitive<"saturday">\r +\r + sunday\r + = caseInsensitive<"sunday">\r +\r + unitsOfTime\r + = year\r + | month\r + | week\r + | day\r + | hour\r + | minute\r + | second\r + | millisecond\r +\r + year\r + = caseInsensitive<"years">\r + | caseInsensitive<"year">\r + | "y"\r +\r + month\r + = caseInsensitive<"months">\r + | caseInsensitive<"month">\r + | "M"\r +\r + week\r + = caseInsensitive<"weeks">\r + | caseInsensitive<"week">\r + | "w"\r +\r + day\r + = caseInsensitive<"days">\r + | caseInsensitive<"day">\r + | "d"\r +\r + hour\r + = caseInsensitive<"hours">\r + | caseInsensitive<"hour">\r + | "h"\r +\r + minute\r + = caseInsensitive<"minutes">\r + | caseInsensitive<"minute">\r + | "m"\r + \r + second\r + = caseInsensitive<"seconds">\r + | caseInsensitive<"second">\r + | "s"\r +\r + millisecond\r + = caseInsensitive<"milliseconds">\r + | caseInsensitive<"millisecond">\r + | "ms"\r + \r + until\r + = "until"\r + | "before"\r + \r + since\r + = "since"\r + | "after"\r +\r + number\r + = digit* "." digit+ -- fract\r + | digit+ -- whole\r + \r + integer\r + = digit+\r +}`},"Datetime",null,"Expression",{Expression:["define",{sourceInterval:[14,126]},null,[],["alt",{sourceInterval:[32,126]},["app",{sourceInterval:[32,40]},"Addition",[]],["app",{sourceInterval:[48,59]},"Subtraction",[]],["app",{sourceInterval:[67,84]},"TimeUnitUntilDate",[]],["app",{sourceInterval:[92,109]},"TimeUnitSinceDate",[]],["app",{sourceInterval:[117,126]},"Primitive",[]]]],Addition:["define",{sourceInterval:[132,170]},null,[],["seq",{sourceInterval:[148,170]},["app",{sourceInterval:[148,157]},"Primitive",[]],["app",{sourceInterval:[158,161]},"add",[]],["app",{sourceInterval:[162,170]},"Timespan",[]]]],Subtraction:["define",{sourceInterval:[176,222]},null,[],["seq",{sourceInterval:[195,222]},["app",{sourceInterval:[195,204]},"Primitive",[]],["app",{sourceInterval:[205,213]},"subtract",[]],["app",{sourceInterval:[214,222]},"Timespan",[]]]],Primitive:["define",{sourceInterval:[230,354]},null,[],["alt",{sourceInterval:[247,354]},["app",{sourceInterval:[247,255]},"Datetime",[]],["app",{sourceInterval:[263,266]},"Now",[]],["app",{sourceInterval:[274,279]},"Today",[]],["app",{sourceInterval:[287,295]},"Tomorrow",[]],["app",{sourceInterval:[303,312]},"Yesterday",[]],["app",{sourceInterval:[320,333]},"NextDayOfWeek",[]],["app",{sourceInterval:[341,354]},"LastDayOfWeek",[]]]],Timespan:["define",{sourceInterval:[360,394]},null,[],["seq",{sourceInterval:[376,394]},["app",{sourceInterval:[376,382]},"number",[]],["app",{sourceInterval:[383,394]},"unitsOfTime",[]]]],Now:["define",{sourceInterval:[400,415]},null,[],["app",{sourceInterval:[412,415]},"now",[]]],Today:["define",{sourceInterval:[421,440]},null,[],["app",{sourceInterval:[435,440]},"today",[]]],Tomorrow:["define",{sourceInterval:[446,471]},null,[],["app",{sourceInterval:[463,471]},"tomorrow",[]]],Yesterday:["define",{sourceInterval:[477,504]},null,[],["app",{sourceInterval:[495,504]},"yesterday",[]]],Datetime:["define",{sourceInterval:[545,610]},null,[],["alt",{sourceInterval:[561,610]},["app",{sourceInterval:[561,576]},"datetimeIso8601",[]],["app",{sourceInterval:[584,610]},"datetimeFormatEuropeanOrUs",[]]]],NextDayOfWeek:["define",{sourceInterval:[641,695]},null,[],["seq",{sourceInterval:[662,695]},["app",{sourceInterval:[662,685]},"caseInsensitive",[["terminal",{sourceInterval:[678,684]},"next"]]],["app",{sourceInterval:[686,695]},"dayOfWeek",[]]]],LastDayOfWeek:["define",{sourceInterval:[727,781]},null,[],["seq",{sourceInterval:[748,781]},["app",{sourceInterval:[748,771]},"caseInsensitive",[["terminal",{sourceInterval:[764,770]},"last"]]],["app",{sourceInterval:[772,781]},"dayOfWeek",[]]]],TimeUnitUntilDate:["define",{sourceInterval:[791,857]},null,[],["seq",{sourceInterval:[815,857]},["alt",{sourceInterval:[816,841]},["app",{sourceInterval:[816,820]},"year",[]],["app",{sourceInterval:[823,828]},"month",[]],["app",{sourceInterval:[831,835]},"week",[]],["app",{sourceInterval:[838,841]},"day",[]]],["app",{sourceInterval:[843,848]},"until",[]],["app",{sourceInterval:[849,857]},"Datetime",[]]]],TimeUnitSinceDate:["define",{sourceInterval:[867,933]},null,[],["seq",{sourceInterval:[891,933]},["alt",{sourceInterval:[892,917]},["app",{sourceInterval:[892,896]},"year",[]],["app",{sourceInterval:[899,904]},"month",[]],["app",{sourceInterval:[907,911]},"week",[]],["app",{sourceInterval:[914,917]},"day",[]]],["app",{sourceInterval:[919,924]},"since",[]],["app",{sourceInterval:[925,933]},"Datetime",[]]]],oneDigit:["define",{sourceInterval:[959,980]},null,[],["app",{sourceInterval:[975,980]},"digit",[]]],twoDigit:["define",{sourceInterval:[986,1014]},null,[],["seq",{sourceInterval:[1003,1014]},["app",{sourceInterval:[1003,1008]},"digit",[]],["app",{sourceInterval:[1009,1014]},"digit",[]]]],fourDigit:["define",{sourceInterval:[1022,1062]},null,[],["seq",{sourceInterval:[1039,1062]},["app",{sourceInterval:[1039,1044]},"digit",[]],["app",{sourceInterval:[1045,1050]},"digit",[]],["app",{sourceInterval:[1051,1056]},"digit",[]],["app",{sourceInterval:[1057,1062]},"digit",[]]]],time:["define",{sourceInterval:[1068,1154]},null,[],["seq",{sourceInterval:[1081,1154]},["alt",{sourceInterval:[1082,1101]},["app",{sourceInterval:[1082,1090]},"twoDigit",[]],["app",{sourceInterval:[1093,1101]},"oneDigit",[]]],["terminal",{sourceInterval:[1103,1106]},":"],["alt",{sourceInterval:[1108,1127]},["app",{sourceInterval:[1108,1116]},"twoDigit",[]],["app",{sourceInterval:[1119,1127]},"oneDigit",[]]],["terminal",{sourceInterval:[1129,1132]},":"],["alt",{sourceInterval:[1134,1153]},["app",{sourceInterval:[1134,1142]},"twoDigit",[]],["app",{sourceInterval:[1145,1153]},"oneDigit",[]]]]],datetimeIso8601:["define",{sourceInterval:[1160,1315]},null,[],["seq",{sourceInterval:[1183,1315]},["app",{sourceInterval:[1183,1192]},"fourDigit",[]],["terminal",{sourceInterval:[1193,1196]},"-"],["app",{sourceInterval:[1197,1205]},"twoDigit",[]],["terminal",{sourceInterval:[1206,1209]},"-"],["app",{sourceInterval:[1210,1218]},"twoDigit",[]],["opt",{sourceInterval:[1219,1233]},["alt",{sourceInterval:[1220,1231]},["terminal",{sourceInterval:[1220,1223]},"T"],["app",{sourceInterval:[1226,1231]},"space",[]]]],["opt",{sourceInterval:[1234,1275]},["alt",{sourceInterval:[1235,1273]},["app",{sourceInterval:[1235,1255]},"timeWithMilliseconds",[]],["app",{sourceInterval:[1258,1273]},"timeWithSeconds",[]]]],["opt",{sourceInterval:[1277,1315]},["alt",{sourceInterval:[1278,1313]},["terminal",{sourceInterval:[1278,1281]},"Z"],["app",{sourceInterval:[1284,1297]},"timeZoneColon",[]],["app",{sourceInterval:[1300,1313]},"timeZoneHours",[]]]]]],timeWithMilliseconds:["define",{sourceInterval:[1320,1394]},null,[],["seq",{sourceInterval:[1349,1394]},["app",{sourceInterval:[1349,1357]},"twoDigit",[]],["terminal",{sourceInterval:[1358,1361]},":"],["app",{sourceInterval:[1362,1370]},"twoDigit",[]],["terminal",{sourceInterval:[1371,1374]},":"],["app",{sourceInterval:[1375,1383]},"twoDigit",[]],["terminal",{sourceInterval:[1384,1387]},"."],["plus",{sourceInterval:[1388,1394]},["app",{sourceInterval:[1388,1393]},"digit",[]]]]],timeWithSeconds:["define",{sourceInterval:[1404,1461]},null,[],["seq",{sourceInterval:[1427,1461]},["app",{sourceInterval:[1427,1435]},"twoDigit",[]],["terminal",{sourceInterval:[1436,1439]},":"],["app",{sourceInterval:[1440,1448]},"twoDigit",[]],["terminal",{sourceInterval:[1449,1452]},":"],["app",{sourceInterval:[1453,1461]},"twoDigit",[]]]],datetimeFormatEuropeanOrUs:["define",{sourceInterval:[1467,1757]},null,[],["alt",{sourceInterval:[1501,1757]},["seq",{sourceInterval:[1501,1581]},["alt",{sourceInterval:[1502,1521]},["app",{sourceInterval:[1502,1510]},"twoDigit",[]],["app",{sourceInterval:[1513,1521]},"oneDigit",[]]],["terminal",{sourceInterval:[1523,1526]},"/"],["alt",{sourceInterval:[1528,1547]},["app",{sourceInterval:[1528,1536]},"twoDigit",[]],["app",{sourceInterval:[1539,1547]},"oneDigit",[]]],["terminal",{sourceInterval:[1549,1552]},"/"],["alt",{sourceInterval:[1554,1574]},["app",{sourceInterval:[1554,1563]},"fourDigit",[]],["app",{sourceInterval:[1566,1574]},"twoDigit",[]]],["opt",{sourceInterval:[1576,1581]},["app",{sourceInterval:[1576,1580]},"time",[]]]],["seq",{sourceInterval:[1589,1669]},["alt",{sourceInterval:[1590,1609]},["app",{sourceInterval:[1590,1598]},"twoDigit",[]],["app",{sourceInterval:[1601,1609]},"oneDigit",[]]],["terminal",{sourceInterval:[1611,1614]},"-"],["alt",{sourceInterval:[1616,1635]},["app",{sourceInterval:[1616,1624]},"twoDigit",[]],["app",{sourceInterval:[1627,1635]},"oneDigit",[]]],["terminal",{sourceInterval:[1637,1640]},"-"],["alt",{sourceInterval:[1642,1662]},["app",{sourceInterval:[1642,1651]},"fourDigit",[]],["app",{sourceInterval:[1654,1662]},"twoDigit",[]]],["opt",{sourceInterval:[1664,1669]},["app",{sourceInterval:[1664,1668]},"time",[]]]],["seq",{sourceInterval:[1677,1757]},["alt",{sourceInterval:[1678,1697]},["app",{sourceInterval:[1678,1686]},"twoDigit",[]],["app",{sourceInterval:[1689,1697]},"oneDigit",[]]],["terminal",{sourceInterval:[1699,1702]},"."],["alt",{sourceInterval:[1704,1723]},["app",{sourceInterval:[1704,1712]},"twoDigit",[]],["app",{sourceInterval:[1715,1723]},"oneDigit",[]]],["terminal",{sourceInterval:[1725,1728]},"."],["alt",{sourceInterval:[1730,1750]},["app",{sourceInterval:[1730,1739]},"fourDigit",[]],["app",{sourceInterval:[1742,1750]},"twoDigit",[]]],["opt",{sourceInterval:[1752,1757]},["app",{sourceInterval:[1752,1756]},"time",[]]]]]],timeZoneColon:["define",{sourceInterval:[1767,1836]},null,[],["alt",{sourceInterval:[1787,1836]},["seq",{sourceInterval:[1787,1808]},["terminal",{sourceInterval:[1787,1790]},"+"],["plus",{sourceInterval:[1791,1797]},["app",{sourceInterval:[1791,1796]},"digit",[]]],["terminal",{sourceInterval:[1798,1801]},":"],["plus",{sourceInterval:[1802,1808]},["app",{sourceInterval:[1802,1807]},"digit",[]]]],["seq",{sourceInterval:[1815,1836]},["terminal",{sourceInterval:[1815,1818]},"-"],["plus",{sourceInterval:[1819,1825]},["app",{sourceInterval:[1819,1824]},"digit",[]]],["terminal",{sourceInterval:[1826,1829]},":"],["plus",{sourceInterval:[1830,1836]},["app",{sourceInterval:[1830,1835]},"digit",[]]]]]],timeZoneHours:["define",{sourceInterval:[1847,1880]},null,[],["seq",{sourceInterval:[1867,1880]},["terminal",{sourceInterval:[1867,1870]},"+"],["app",{sourceInterval:[1871,1880]},"fourDigit",[]]]],add:["define",{sourceInterval:[1886,1960]},null,[],["alt",{sourceInterval:[1897,1960]},["terminal",{sourceInterval:[1897,1900]},"+"],["app",{sourceInterval:[1907,1929]},"caseInsensitive",[["terminal",{sourceInterval:[1923,1928]},"add"]]],["app",{sourceInterval:[1937,1960]},"caseInsensitive",[["terminal",{sourceInterval:[1953,1959]},"plus"]]]]],subtract:["define",{sourceInterval:[1966,2084]},null,[],["alt",{sourceInterval:[1983,2084]},["terminal",{sourceInterval:[1983,1986]},"-"],["app",{sourceInterval:[1994,2017]},"caseInsensitive",[["terminal",{sourceInterval:[2010,2016]},"take"]]],["app",{sourceInterval:[2025,2049]},"caseInsensitive",[["terminal",{sourceInterval:[2041,2048]},"minus"]]],["app",{sourceInterval:[2057,2084]},"caseInsensitive",[["terminal",{sourceInterval:[2073,2083]},"subtract"]]]]],now:["define",{sourceInterval:[2090,2123]},null,[],["app",{sourceInterval:[2101,2123]},"caseInsensitive",[["terminal",{sourceInterval:[2117,2122]},"now"]]]],today:["define",{sourceInterval:[2129,2166]},null,[],["app",{sourceInterval:[2142,2166]},"caseInsensitive",[["terminal",{sourceInterval:[2158,2165]},"today"]]]],tomorrow:["define",{sourceInterval:[2172,2215]},null,[],["app",{sourceInterval:[2188,2215]},"caseInsensitive",[["terminal",{sourceInterval:[2204,2214]},"tomorrow"]]]],yesterday:["define",{sourceInterval:[2221,2266]},null,[],["app",{sourceInterval:[2238,2266]},"caseInsensitive",[["terminal",{sourceInterval:[2254,2265]},"yesterday"]]]],dayOfWeek:["define",{sourceInterval:[2272,2387]},null,[],["alt",{sourceInterval:[2289,2387]},["app",{sourceInterval:[2289,2295]},"monday",[]],["app",{sourceInterval:[2303,2310]},"tuesday",[]],["app",{sourceInterval:[2318,2327]},"wednesday",[]],["app",{sourceInterval:[2335,2343]},"thursday",[]],["app",{sourceInterval:[2351,2357]},"friday",[]],["app",{sourceInterval:[2365,2373]},"saturday",[]],["app",{sourceInterval:[2381,2387]},"sunday",[]]]],monday:["define",{sourceInterval:[2393,2432]},null,[],["app",{sourceInterval:[2407,2432]},"caseInsensitive",[["terminal",{sourceInterval:[2423,2431]},"monday"]]]],tuesday:["define",{sourceInterval:[2438,2479]},null,[],["app",{sourceInterval:[2453,2479]},"caseInsensitive",[["terminal",{sourceInterval:[2469,2478]},"tuesday"]]]],wednesday:["define",{sourceInterval:[2485,2530]},null,[],["app",{sourceInterval:[2502,2530]},"caseInsensitive",[["terminal",{sourceInterval:[2518,2529]},"wednesday"]]]],thursday:["define",{sourceInterval:[2536,2579]},null,[],["app",{sourceInterval:[2552,2579]},"caseInsensitive",[["terminal",{sourceInterval:[2568,2578]},"thursday"]]]],friday:["define",{sourceInterval:[2587,2626]},null,[],["app",{sourceInterval:[2601,2626]},"caseInsensitive",[["terminal",{sourceInterval:[2617,2625]},"friday"]]]],saturday:["define",{sourceInterval:[2632,2675]},null,[],["app",{sourceInterval:[2648,2675]},"caseInsensitive",[["terminal",{sourceInterval:[2664,2674]},"saturday"]]]],sunday:["define",{sourceInterval:[2681,2720]},null,[],["app",{sourceInterval:[2695,2720]},"caseInsensitive",[["terminal",{sourceInterval:[2711,2719]},"sunday"]]]],unitsOfTime:["define",{sourceInterval:[2726,2844]},null,[],["alt",{sourceInterval:[2745,2844]},["app",{sourceInterval:[2745,2749]},"year",[]],["app",{sourceInterval:[2757,2762]},"month",[]],["app",{sourceInterval:[2770,2774]},"week",[]],["app",{sourceInterval:[2782,2785]},"day",[]],["app",{sourceInterval:[2793,2797]},"hour",[]],["app",{sourceInterval:[2805,2811]},"minute",[]],["app",{sourceInterval:[2819,2825]},"second",[]],["app",{sourceInterval:[2833,2844]},"millisecond",[]]]],year:["define",{sourceInterval:[2850,2928]},null,[],["alt",{sourceInterval:[2862,2928]},["app",{sourceInterval:[2862,2886]},"caseInsensitive",[["terminal",{sourceInterval:[2878,2885]},"years"]]],["app",{sourceInterval:[2894,2917]},"caseInsensitive",[["terminal",{sourceInterval:[2910,2916]},"year"]]],["terminal",{sourceInterval:[2925,2928]},"y"]]],month:["define",{sourceInterval:[2934,3015]},null,[],["alt",{sourceInterval:[2947,3015]},["app",{sourceInterval:[2947,2972]},"caseInsensitive",[["terminal",{sourceInterval:[2963,2971]},"months"]]],["app",{sourceInterval:[2980,3004]},"caseInsensitive",[["terminal",{sourceInterval:[2996,3003]},"month"]]],["terminal",{sourceInterval:[3012,3015]},"M"]]],week:["define",{sourceInterval:[3021,3099]},null,[],["alt",{sourceInterval:[3033,3099]},["app",{sourceInterval:[3033,3057]},"caseInsensitive",[["terminal",{sourceInterval:[3049,3056]},"weeks"]]],["app",{sourceInterval:[3065,3088]},"caseInsensitive",[["terminal",{sourceInterval:[3081,3087]},"week"]]],["terminal",{sourceInterval:[3096,3099]},"w"]]],day:["define",{sourceInterval:[3105,3180]},null,[],["alt",{sourceInterval:[3116,3180]},["app",{sourceInterval:[3116,3139]},"caseInsensitive",[["terminal",{sourceInterval:[3132,3138]},"days"]]],["app",{sourceInterval:[3147,3169]},"caseInsensitive",[["terminal",{sourceInterval:[3163,3168]},"day"]]],["terminal",{sourceInterval:[3177,3180]},"d"]]],hour:["define",{sourceInterval:[3186,3264]},null,[],["alt",{sourceInterval:[3198,3264]},["app",{sourceInterval:[3198,3222]},"caseInsensitive",[["terminal",{sourceInterval:[3214,3221]},"hours"]]],["app",{sourceInterval:[3230,3253]},"caseInsensitive",[["terminal",{sourceInterval:[3246,3252]},"hour"]]],["terminal",{sourceInterval:[3261,3264]},"h"]]],minute:["define",{sourceInterval:[3270,3354]},null,[],["alt",{sourceInterval:[3284,3354]},["app",{sourceInterval:[3284,3310]},"caseInsensitive",[["terminal",{sourceInterval:[3300,3309]},"minutes"]]],["app",{sourceInterval:[3318,3343]},"caseInsensitive",[["terminal",{sourceInterval:[3334,3342]},"minute"]]],["terminal",{sourceInterval:[3351,3354]},"m"]]],second:["define",{sourceInterval:[3364,3448]},null,[],["alt",{sourceInterval:[3378,3448]},["app",{sourceInterval:[3378,3404]},"caseInsensitive",[["terminal",{sourceInterval:[3394,3403]},"seconds"]]],["app",{sourceInterval:[3412,3437]},"caseInsensitive",[["terminal",{sourceInterval:[3428,3436]},"second"]]],["terminal",{sourceInterval:[3445,3448]},"s"]]],millisecond:["define",{sourceInterval:[3454,3554]},null,[],["alt",{sourceInterval:[3473,3554]},["app",{sourceInterval:[3473,3504]},"caseInsensitive",[["terminal",{sourceInterval:[3489,3503]},"milliseconds"]]],["app",{sourceInterval:[3512,3542]},"caseInsensitive",[["terminal",{sourceInterval:[3528,3541]},"millisecond"]]],["terminal",{sourceInterval:[3550,3554]},"ms"]]],until:["define",{sourceInterval:[3564,3599]},null,[],["alt",{sourceInterval:[3576,3599]},["terminal",{sourceInterval:[3576,3583]},"until"],["terminal",{sourceInterval:[3591,3599]},"before"]]],since:["define",{sourceInterval:[3609,3643]},null,[],["alt",{sourceInterval:[3621,3643]},["terminal",{sourceInterval:[3621,3628]},"since"],["terminal",{sourceInterval:[3636,3643]},"after"]]],number_fract:["define",{sourceInterval:[3663,3690]},null,[],["seq",{sourceInterval:[3663,3680]},["star",{sourceInterval:[3663,3669]},["app",{sourceInterval:[3663,3668]},"digit",[]]],["terminal",{sourceInterval:[3670,3673]},"."],["plus",{sourceInterval:[3674,3680]},["app",{sourceInterval:[3674,3679]},"digit",[]]]]],number_whole:["define",{sourceInterval:[3698,3725]},null,[],["plus",{sourceInterval:[3698,3704]},["app",{sourceInterval:[3698,3703]},"digit",[]]]],number:["define",{sourceInterval:[3649,3725]},null,[],["alt",{sourceInterval:[3663,3725]},["app",{sourceInterval:[3663,3680]},"number_fract",[]],["app",{sourceInterval:[3698,3704]},"number_whole",[]]]],integer:["define",{sourceInterval:[3735,3755]},null,[],["plus",{sourceInterval:[3749,3755]},["app",{sourceInterval:[3749,3754]},"digit",[]]]]}]);sc.exports=$f});var uc=E((O3,lc)=>{"use strict";var{makeRecipe:Kf}=Qe(),Zf=Kf(["grammar",{source:`Dice {\r + Expression = Roll\r +\r + /*\r + Patterns Examples:\r + roll(0, 7)\r + roll between 1 and 4\r + roll from 2 to 6\r + roll 4-8\r + */\r + Roll\r + = caseInsensitive<"roll"> rollOpen? Primitive rollSeperator? Primitive rollEnd?\r +\r + Primitive\r + = "+" Primitive -- positive\r + | "-" Primitive -- negative\r + | number\r +\r + rollOpen \r + = "("\r + | caseInsensitive<"between">\r + | caseInsensitive<"from">\r +\r + rollSeperator\r + = ","\r + | "-"\r + | caseInsensitive<"and">\r + | caseInsensitive<"to">\r +\r + rollEnd\r + = ")"\r +\r + number\r + = digit* "." digit+ -- fract\r + | digit+ -- whole\r +}`},"Dice",null,"Expression",{Expression:["define",{sourceInterval:[10,27]},null,[],["app",{sourceInterval:[23,27]},"Roll",[]]],Roll:["define",{sourceInterval:[147,236]},null,[],["seq",{sourceInterval:[159,236]},["app",{sourceInterval:[159,182]},"caseInsensitive",[["terminal",{sourceInterval:[175,181]},"roll"]]],["opt",{sourceInterval:[183,192]},["app",{sourceInterval:[183,191]},"rollOpen",[]]],["app",{sourceInterval:[193,202]},"Primitive",[]],["opt",{sourceInterval:[203,217]},["app",{sourceInterval:[203,216]},"rollSeperator",[]]],["app",{sourceInterval:[218,227]},"Primitive",[]],["opt",{sourceInterval:[228,236]},["app",{sourceInterval:[228,235]},"rollEnd",[]]]]],Primitive_positive:["define",{sourceInterval:[259,284]},null,[],["seq",{sourceInterval:[259,272]},["terminal",{sourceInterval:[259,262]},"+"],["app",{sourceInterval:[263,272]},"Primitive",[]]]],Primitive_negative:["define",{sourceInterval:[292,317]},null,[],["seq",{sourceInterval:[292,305]},["terminal",{sourceInterval:[292,295]},"-"],["app",{sourceInterval:[296,305]},"Primitive",[]]]],Primitive:["define",{sourceInterval:[242,331]},null,[],["alt",{sourceInterval:[259,331]},["app",{sourceInterval:[259,272]},"Primitive_positive",[]],["app",{sourceInterval:[292,305]},"Primitive_negative",[]],["app",{sourceInterval:[325,331]},"number",[]]]],rollOpen:["define",{sourceInterval:[337,422]},null,[],["alt",{sourceInterval:[354,422]},["terminal",{sourceInterval:[354,357]},"("],["app",{sourceInterval:[365,391]},"caseInsensitive",[["terminal",{sourceInterval:[381,390]},"between"]]],["app",{sourceInterval:[399,422]},"caseInsensitive",[["terminal",{sourceInterval:[415,421]},"from"]]]]],rollSeperator:["define",{sourceInterval:[428,522]},null,[],["alt",{sourceInterval:[449,522]},["terminal",{sourceInterval:[449,452]},","],["terminal",{sourceInterval:[460,463]},"-"],["app",{sourceInterval:[471,493]},"caseInsensitive",[["terminal",{sourceInterval:[487,492]},"and"]]],["app",{sourceInterval:[501,522]},"caseInsensitive",[["terminal",{sourceInterval:[517,521]},"to"]]]]],rollEnd:["define",{sourceInterval:[528,546]},null,[],["terminal",{sourceInterval:[543,546]},")"]],number_fract:["define",{sourceInterval:[566,593]},null,[],["seq",{sourceInterval:[566,583]},["star",{sourceInterval:[566,572]},["app",{sourceInterval:[566,571]},"digit",[]]],["terminal",{sourceInterval:[573,576]},"."],["plus",{sourceInterval:[577,583]},["app",{sourceInterval:[577,582]},"digit",[]]]]],number_whole:["define",{sourceInterval:[601,628]},null,[],["plus",{sourceInterval:[601,607]},["app",{sourceInterval:[601,606]},"digit",[]]]],number:["define",{sourceInterval:[552,628]},null,[],["alt",{sourceInterval:[566,628]},["app",{sourceInterval:[566,583]},"number_fract",[]],["app",{sourceInterval:[601,607]},"number_whole",[]]]]}]);lc.exports=Zf});var mc=E((U3,pc)=>{"use strict";var{makeRecipe:cc}=Qe(),Kn={};Kn.BasicArithmetic=cc(["grammar",{source:`BasicArithmetic {\r + Expression\r + = LogicalShift\r +\r + LogicalShift\r + = LogicalShift "<<" LogicalShift -- left\r + | LogicalShift ">>" LogicalShift -- right\r + | AS \r +\r + // Addition or Subtraction\r + AS\r + = AS add MD -- addition\r + | AS subtract MD -- subtraction\r + | MD\r +\r + // Multiply or Divide\r + MD\r + = MD multiply E -- multiplication\r + | MD divide E -- division\r + | MD modulo E -- modulo\r + | E\r +\r + // Exponent\r + E\r + = P exponent E -- exponent\r + | P\r +\r + // Parenthesis\r + P\r + = "(" Expression ")" -- parenthesis\r + | Primitive\r + \r + Primitive\r + = "+" Primitive -- positive\r + | "-" Primitive -- negative\r + | constant\r + | hex\r + | number\r + \r + // Lexical Rules\r + add \r + = "+"\r + | caseInsensitive<"plus">\r + | caseInsensitive<"add">\r + | caseInsensitive<"and">\r + \r + subtract \r + = "-"\r + | caseInsensitive<"minus">\r + | caseInsensitive<"subtract">\r + | caseInsensitive<"remove">\r + | caseInsensitive<"take">\r + \r + multiply \r + = "*"\r + | "\\\\*" // Escaped \\* for markdown\r + | "\\u{00D7}" // \xD7\r + | caseInsensitive<"x">\r + | caseInsensitive<"times by">\r + | caseInsensitive<"times">\r + | caseInsensitive<"multiply by">\r + | caseInsensitive<"multiply">\r + \r + divide\r + = "/"\r + | "\\u{00F7}" // \xF7\r + | caseInsensitive<"divide by">\r + | caseInsensitive<"divide">\r +\r + modulo\r + = "%"\r + | caseInsensitive<"modulo">\r + | caseInsensitive<"mod">\r +\r + exponent\r + = "^"\r + | caseInsensitive<"to the power of">\r + | caseInsensitive<"power of">\r + | caseInsensitive<"exponent">\r + | caseInsensitive<"prime">\r +\r + constant \r + = caseInsensitive<"PI"> \r + | caseInsensitive<"E">\r +\r + // Lazy: It will match anything like 1214.200.2442,200 the visitor decides how to interpret\r + number\r + = (separator? digit)+\r +\r + // The separator can be a comma or a period, detected in the visitor\r + separator\r + = "." | ","\r +\r + whole\r + = digit+\r +\r + hex\r + = "0x" hexDigit+\r + | hexDigit+ "h"\r +}`},"BasicArithmetic",null,"Expression",{Expression:["define",{sourceInterval:[21,51]},null,[],["app",{sourceInterval:[39,51]},"LogicalShift",[]]],LogicalShift_left:["define",{sourceInterval:[77,115]},null,[],["seq",{sourceInterval:[77,107]},["app",{sourceInterval:[77,89]},"LogicalShift",[]],["terminal",{sourceInterval:[90,94]},"<<"],["app",{sourceInterval:[95,107]},"LogicalShift",[]]]],LogicalShift_right:["define",{sourceInterval:[123,162]},null,[],["seq",{sourceInterval:[123,153]},["app",{sourceInterval:[123,135]},"LogicalShift",[]],["terminal",{sourceInterval:[136,140]},">>"],["app",{sourceInterval:[141,153]},"LogicalShift",[]]]],LogicalShift:["define",{sourceInterval:[57,172]},null,[],["alt",{sourceInterval:[77,172]},["app",{sourceInterval:[77,107]},"LogicalShift_left",[]],["app",{sourceInterval:[123,153]},"LogicalShift_right",[]],["app",{sourceInterval:[170,172]},"AS",[]]]],AS_addition:["define",{sourceInterval:[219,241]},null,[],["seq",{sourceInterval:[219,228]},["app",{sourceInterval:[219,221]},"AS",[]],["app",{sourceInterval:[222,225]},"add",[]],["app",{sourceInterval:[226,228]},"MD",[]]]],AS_subtraction:["define",{sourceInterval:[249,279]},null,[],["seq",{sourceInterval:[249,263]},["app",{sourceInterval:[249,251]},"AS",[]],["app",{sourceInterval:[252,260]},"subtract",[]],["app",{sourceInterval:[261,263]},"MD",[]]]],AS:["define",{sourceInterval:[209,289]},null,[],["alt",{sourceInterval:[219,289]},["app",{sourceInterval:[219,228]},"AS_addition",[]],["app",{sourceInterval:[249,263]},"AS_subtraction",[]],["app",{sourceInterval:[287,289]},"MD",[]]]],MD_multiplication:["define",{sourceInterval:[330,362]},null,[],["seq",{sourceInterval:[330,343]},["app",{sourceInterval:[330,332]},"MD",[]],["app",{sourceInterval:[333,341]},"multiply",[]],["app",{sourceInterval:[342,343]},"E",[]]]],MD_division:["define",{sourceInterval:[370,394]},null,[],["seq",{sourceInterval:[370,381]},["app",{sourceInterval:[370,372]},"MD",[]],["app",{sourceInterval:[373,379]},"divide",[]],["app",{sourceInterval:[380,381]},"E",[]]]],MD_modulo:["define",{sourceInterval:[402,424]},null,[],["seq",{sourceInterval:[402,413]},["app",{sourceInterval:[402,404]},"MD",[]],["app",{sourceInterval:[405,411]},"modulo",[]],["app",{sourceInterval:[412,413]},"E",[]]]],MD:["define",{sourceInterval:[320,433]},null,[],["alt",{sourceInterval:[330,433]},["app",{sourceInterval:[330,343]},"MD_multiplication",[]],["app",{sourceInterval:[370,381]},"MD_division",[]],["app",{sourceInterval:[402,413]},"MD_modulo",[]],["app",{sourceInterval:[432,433]},"E",[]]]],E_exponent:["define",{sourceInterval:[463,488]},null,[],["seq",{sourceInterval:[463,475]},["app",{sourceInterval:[463,464]},"P",[]],["app",{sourceInterval:[465,473]},"exponent",[]],["app",{sourceInterval:[474,475]},"E",[]]]],E:["define",{sourceInterval:[454,497]},null,[],["alt",{sourceInterval:[463,497]},["app",{sourceInterval:[463,475]},"E_exponent",[]],["app",{sourceInterval:[496,497]},"P",[]]]],P_parenthesis:["define",{sourceInterval:[530,564]},null,[],["seq",{sourceInterval:[530,548]},["terminal",{sourceInterval:[530,533]},"("],["app",{sourceInterval:[534,544]},"Expression",[]],["terminal",{sourceInterval:[545,548]},")"]]],P:["define",{sourceInterval:[521,581]},null,[],["alt",{sourceInterval:[530,581]},["app",{sourceInterval:[530,548]},"P_parenthesis",[]],["app",{sourceInterval:[572,581]},"Primitive",[]]]],Primitive_positive:["define",{sourceInterval:[608,633]},null,[],["seq",{sourceInterval:[608,621]},["terminal",{sourceInterval:[608,611]},"+"],["app",{sourceInterval:[612,621]},"Primitive",[]]]],Primitive_negative:["define",{sourceInterval:[641,666]},null,[],["seq",{sourceInterval:[641,654]},["terminal",{sourceInterval:[641,644]},"-"],["app",{sourceInterval:[645,654]},"Primitive",[]]]],Primitive:["define",{sourceInterval:[591,707]},null,[],["alt",{sourceInterval:[608,707]},["app",{sourceInterval:[608,621]},"Primitive_positive",[]],["app",{sourceInterval:[641,654]},"Primitive_negative",[]],["app",{sourceInterval:[674,682]},"constant",[]],["app",{sourceInterval:[690,693]},"hex",[]],["app",{sourceInterval:[701,707]},"number",[]]]],add:["define",{sourceInterval:[734,838]},null,[],["alt",{sourceInterval:[745,838]},["terminal",{sourceInterval:[745,748]},"+"],["app",{sourceInterval:[756,779]},"caseInsensitive",[["terminal",{sourceInterval:[772,778]},"plus"]]],["app",{sourceInterval:[786,808]},"caseInsensitive",[["terminal",{sourceInterval:[802,807]},"add"]]],["app",{sourceInterval:[816,838]},"caseInsensitive",[["terminal",{sourceInterval:[832,837]},"and"]]]]],subtract:["define",{sourceInterval:[848,999]},null,[],["alt",{sourceInterval:[865,999]},["terminal",{sourceInterval:[865,868]},"-"],["app",{sourceInterval:[876,900]},"caseInsensitive",[["terminal",{sourceInterval:[892,899]},"minus"]]],["app",{sourceInterval:[908,935]},"caseInsensitive",[["terminal",{sourceInterval:[924,934]},"subtract"]]],["app",{sourceInterval:[943,968]},"caseInsensitive",[["terminal",{sourceInterval:[959,967]},"remove"]]],["app",{sourceInterval:[976,999]},"caseInsensitive",[["terminal",{sourceInterval:[992,998]},"take"]]]]],multiply:["define",{sourceInterval:[1011,1262]},null,[],["alt",{sourceInterval:[1028,1262]},["terminal",{sourceInterval:[1028,1031]},"*"],["terminal",{sourceInterval:[1039,1044]},"\\*"],["terminal",{sourceInterval:[1079,1089]},"\xD7"],["app",{sourceInterval:[1102,1122]},"caseInsensitive",[["terminal",{sourceInterval:[1118,1121]},"x"]]],["app",{sourceInterval:[1130,1157]},"caseInsensitive",[["terminal",{sourceInterval:[1146,1156]},"times by"]]],["app",{sourceInterval:[1165,1189]},"caseInsensitive",[["terminal",{sourceInterval:[1181,1188]},"times"]]],["app",{sourceInterval:[1197,1227]},"caseInsensitive",[["terminal",{sourceInterval:[1213,1226]},"multiply by"]]],["app",{sourceInterval:[1235,1262]},"caseInsensitive",[["terminal",{sourceInterval:[1251,1261]},"multiply"]]]]],divide:["define",{sourceInterval:[1274,1383]},null,[],["alt",{sourceInterval:[1288,1383]},["terminal",{sourceInterval:[1288,1291]},"/"],["terminal",{sourceInterval:[1299,1309]},"\xF7"],["app",{sourceInterval:[1322,1350]},"caseInsensitive",[["terminal",{sourceInterval:[1338,1349]},"divide by"]]],["app",{sourceInterval:[1358,1383]},"caseInsensitive",[["terminal",{sourceInterval:[1374,1382]},"divide"]]]]],modulo:["define",{sourceInterval:[1389,1469]},null,[],["alt",{sourceInterval:[1403,1469]},["terminal",{sourceInterval:[1403,1406]},"%"],["app",{sourceInterval:[1414,1439]},"caseInsensitive",[["terminal",{sourceInterval:[1430,1438]},"modulo"]]],["app",{sourceInterval:[1447,1469]},"caseInsensitive",[["terminal",{sourceInterval:[1463,1468]},"mod"]]]]],exponent:["define",{sourceInterval:[1475,1638]},null,[],["alt",{sourceInterval:[1491,1638]},["terminal",{sourceInterval:[1491,1494]},"^"],["app",{sourceInterval:[1502,1536]},"caseInsensitive",[["terminal",{sourceInterval:[1518,1535]},"to the power of"]]],["app",{sourceInterval:[1544,1571]},"caseInsensitive",[["terminal",{sourceInterval:[1560,1570]},"power of"]]],["app",{sourceInterval:[1579,1606]},"caseInsensitive",[["terminal",{sourceInterval:[1595,1605]},"exponent"]]],["app",{sourceInterval:[1614,1638]},"caseInsensitive",[["terminal",{sourceInterval:[1630,1637]},"prime"]]]]],constant:["define",{sourceInterval:[1644,1711]},null,[],["alt",{sourceInterval:[1661,1711]},["app",{sourceInterval:[1661,1682]},"caseInsensitive",[["terminal",{sourceInterval:[1677,1681]},"PI"]]],["app",{sourceInterval:[1691,1711]},"caseInsensitive",[["terminal",{sourceInterval:[1707,1710]},"E"]]]]],number:["define",{sourceInterval:[1812,1845]},null,[],["plus",{sourceInterval:[1826,1845]},["seq",{sourceInterval:[1827,1843]},["opt",{sourceInterval:[1827,1837]},["app",{sourceInterval:[1827,1836]},"separator",[]]],["app",{sourceInterval:[1838,1843]},"digit",[]]]]],separator:["define",{sourceInterval:[1923,1949]},null,[],["alt",{sourceInterval:[1940,1949]},["terminal",{sourceInterval:[1940,1943]},"."],["terminal",{sourceInterval:[1946,1949]},","]]],whole:["define",{sourceInterval:[1955,1974]},null,[],["plus",{sourceInterval:[1968,1974]},["app",{sourceInterval:[1968,1973]},"digit",[]]]],hex:["define",{sourceInterval:[1980,2026]},null,[],["alt",{sourceInterval:[1991,2026]},["seq",{sourceInterval:[1991,2005]},["terminal",{sourceInterval:[1991,1995]},"0x"],["plus",{sourceInterval:[1996,2005]},["app",{sourceInterval:[1996,2004]},"hexDigit",[]]]],["seq",{sourceInterval:[2013,2026]},["plus",{sourceInterval:[2013,2022]},["app",{sourceInterval:[2013,2021]},"hexDigit",[]]],["terminal",{sourceInterval:[2023,2026]},"h"]]]]}]);Kn.FunctionArithmetic=cc(["grammar",{source:`FunctionArithmetic <: BasicArithmetic {\r + P\r + := "(" Expression ")" -- parenthesis\r + | Function\r + | Primitive\r +\r + Function\r + = DegreesToRadians\r + | RadiansToDegrees\r + | LogBase\r + | JavascriptMathObjectFunction\r +\r + LogBase \r + = caseInsensitive<"logb"> "(" number "," number ")"\r + | caseInsensitive<"logBase"> "(" number "," number ")"\r +\r + DegreesToRadians \r + = caseInsensitive<"degToRad"> "(" number ")"\r + | caseInsensitive<"degreesToRadians"> "(" number ")"\r + | caseInsensitive<"radians"> "(" number ")"\r + | caseInsensitive<"toRadians"> "(" number ")"\r +\r + RadiansToDegrees \r + = caseInsensitive<"radToDeg"> "(" number ")"\r + | caseInsensitive<"radiansToDegrees"> "(" number ")"\r + | caseInsensitive<"degrees"> "(" number ")"\r + | caseInsensitive<"toDegrees"> "(" number ")"\r +\r + // Pass-through for Math.* functions from JS\r + JavascriptMathObjectFunction = mathJsName "(" ListOf ")"\r +\r + mathJsName \r + = caseInsensitive<"sinh">\r + | caseInsensitive<"sin">\r + | caseInsensitive<"abs">\r + | caseInsensitive<"acosh">\r + | caseInsensitive<"acos">\r + | caseInsensitive<"asinh">\r + | caseInsensitive<"asin">\r + | caseInsensitive<"atan2">\r + | caseInsensitive<"atanh">\r + | caseInsensitive<"atan">\r + | caseInsensitive<"cbrt">\r + | caseInsensitive<"ceil">\r + | caseInsensitive<"clz32">\r + | caseInsensitive<"cosh">\r + | caseInsensitive<"cos">\r + | caseInsensitive<"expm1">\r + | caseInsensitive<"exp">\r + | caseInsensitive<"floor">\r + | caseInsensitive<"fround">\r + | caseInsensitive<"hypot">\r + | caseInsensitive<"imul">\r + | caseInsensitive<"log10">\r + | caseInsensitive<"log1p">\r + | caseInsensitive<"log2">\r + | caseInsensitive<"log">\r + | caseInsensitive<"max">\r + | caseInsensitive<"min">\r + | caseInsensitive<"pow">\r + | caseInsensitive<"random">\r + | caseInsensitive<"round">\r + | caseInsensitive<"sign">\r + | caseInsensitive<"sqrt">\r + | caseInsensitive<"tanh">\r + | caseInsensitive<"tan">\r + | caseInsensitive<"trunc">\r +}`},"FunctionArithmetic",Kn.BasicArithmetic,"Expression",{P_parenthesis:["override",{sourceInterval:[53,87]},null,[],["seq",{sourceInterval:[53,71]},["terminal",{sourceInterval:[53,56]},"("],["app",{sourceInterval:[57,67]},"Expression",[]],["terminal",{sourceInterval:[68,71]},")"]]],P:["override",{sourceInterval:[43,120]},null,[],["alt",{sourceInterval:[53,120]},["app",{sourceInterval:[53,71]},"P_parenthesis",[]],["app",{sourceInterval:[95,103]},"Function",[]],["app",{sourceInterval:[111,120]},"Primitive",[]]]],Function:["define",{sourceInterval:[126,233]},null,[],["alt",{sourceInterval:[142,233]},["app",{sourceInterval:[142,158]},"DegreesToRadians",[]],["app",{sourceInterval:[166,182]},"RadiansToDegrees",[]],["app",{sourceInterval:[190,197]},"LogBase",[]],["app",{sourceInterval:[205,233]},"JavascriptMathObjectFunction",[]]]],LogBase:["define",{sourceInterval:[239,364]},null,[],["alt",{sourceInterval:[255,364]},["seq",{sourceInterval:[255,304]},["app",{sourceInterval:[255,278]},"caseInsensitive",[["terminal",{sourceInterval:[271,277]},"logb"]]],["terminal",{sourceInterval:[279,282]},"("],["app",{sourceInterval:[283,289]},"number",[]],["terminal",{sourceInterval:[290,293]},","],["app",{sourceInterval:[294,300]},"number",[]],["terminal",{sourceInterval:[301,304]},")"]],["seq",{sourceInterval:[312,364]},["app",{sourceInterval:[312,338]},"caseInsensitive",[["terminal",{sourceInterval:[328,337]},"logBase"]]],["terminal",{sourceInterval:[339,342]},"("],["app",{sourceInterval:[343,349]},"number",[]],["terminal",{sourceInterval:[350,353]},","],["app",{sourceInterval:[354,360]},"number",[]],["terminal",{sourceInterval:[361,364]},")"]]]],DegreesToRadians:["define",{sourceInterval:[370,595]},null,[],["alt",{sourceInterval:[395,595]},["seq",{sourceInterval:[395,437]},["app",{sourceInterval:[395,422]},"caseInsensitive",[["terminal",{sourceInterval:[411,421]},"degToRad"]]],["terminal",{sourceInterval:[423,426]},"("],["app",{sourceInterval:[427,433]},"number",[]],["terminal",{sourceInterval:[434,437]},")"]],["seq",{sourceInterval:[445,495]},["app",{sourceInterval:[445,480]},"caseInsensitive",[["terminal",{sourceInterval:[461,479]},"degreesToRadians"]]],["terminal",{sourceInterval:[481,484]},"("],["app",{sourceInterval:[485,491]},"number",[]],["terminal",{sourceInterval:[492,495]},")"]],["seq",{sourceInterval:[503,544]},["app",{sourceInterval:[503,529]},"caseInsensitive",[["terminal",{sourceInterval:[519,528]},"radians"]]],["terminal",{sourceInterval:[530,533]},"("],["app",{sourceInterval:[534,540]},"number",[]],["terminal",{sourceInterval:[541,544]},")"]],["seq",{sourceInterval:[552,595]},["app",{sourceInterval:[552,580]},"caseInsensitive",[["terminal",{sourceInterval:[568,579]},"toRadians"]]],["terminal",{sourceInterval:[581,584]},"("],["app",{sourceInterval:[585,591]},"number",[]],["terminal",{sourceInterval:[592,595]},")"]]]],RadiansToDegrees:["define",{sourceInterval:[601,826]},null,[],["alt",{sourceInterval:[626,826]},["seq",{sourceInterval:[626,668]},["app",{sourceInterval:[626,653]},"caseInsensitive",[["terminal",{sourceInterval:[642,652]},"radToDeg"]]],["terminal",{sourceInterval:[654,657]},"("],["app",{sourceInterval:[658,664]},"number",[]],["terminal",{sourceInterval:[665,668]},")"]],["seq",{sourceInterval:[676,726]},["app",{sourceInterval:[676,711]},"caseInsensitive",[["terminal",{sourceInterval:[692,710]},"radiansToDegrees"]]],["terminal",{sourceInterval:[712,715]},"("],["app",{sourceInterval:[716,722]},"number",[]],["terminal",{sourceInterval:[723,726]},")"]],["seq",{sourceInterval:[734,775]},["app",{sourceInterval:[734,760]},"caseInsensitive",[["terminal",{sourceInterval:[750,759]},"degrees"]]],["terminal",{sourceInterval:[761,764]},"("],["app",{sourceInterval:[765,771]},"number",[]],["terminal",{sourceInterval:[772,775]},")"]],["seq",{sourceInterval:[783,826]},["app",{sourceInterval:[783,811]},"caseInsensitive",[["terminal",{sourceInterval:[799,810]},"toDegrees"]]],["terminal",{sourceInterval:[812,815]},"("],["app",{sourceInterval:[816,822]},"number",[]],["terminal",{sourceInterval:[823,826]},")"]]]],JavascriptMathObjectFunction:["define",{sourceInterval:[880,953]},null,[],["seq",{sourceInterval:[911,953]},["app",{sourceInterval:[911,921]},"mathJsName",[]],["terminal",{sourceInterval:[922,925]},"("],["app",{sourceInterval:[926,949]},"ListOf",[["app",{sourceInterval:[933,943]},"Expression",[]],["terminal",{sourceInterval:[945,948]},","]]],["terminal",{sourceInterval:[950,953]},")"]]],mathJsName:["define",{sourceInterval:[959,2062]},null,[],["alt",{sourceInterval:[978,2062]},["app",{sourceInterval:[978,1001]},"caseInsensitive",[["terminal",{sourceInterval:[994,1e3]},"sinh"]]],["app",{sourceInterval:[1009,1031]},"caseInsensitive",[["terminal",{sourceInterval:[1025,1030]},"sin"]]],["app",{sourceInterval:[1039,1061]},"caseInsensitive",[["terminal",{sourceInterval:[1055,1060]},"abs"]]],["app",{sourceInterval:[1069,1093]},"caseInsensitive",[["terminal",{sourceInterval:[1085,1092]},"acosh"]]],["app",{sourceInterval:[1101,1124]},"caseInsensitive",[["terminal",{sourceInterval:[1117,1123]},"acos"]]],["app",{sourceInterval:[1132,1156]},"caseInsensitive",[["terminal",{sourceInterval:[1148,1155]},"asinh"]]],["app",{sourceInterval:[1164,1187]},"caseInsensitive",[["terminal",{sourceInterval:[1180,1186]},"asin"]]],["app",{sourceInterval:[1195,1219]},"caseInsensitive",[["terminal",{sourceInterval:[1211,1218]},"atan2"]]],["app",{sourceInterval:[1227,1251]},"caseInsensitive",[["terminal",{sourceInterval:[1243,1250]},"atanh"]]],["app",{sourceInterval:[1259,1282]},"caseInsensitive",[["terminal",{sourceInterval:[1275,1281]},"atan"]]],["app",{sourceInterval:[1290,1313]},"caseInsensitive",[["terminal",{sourceInterval:[1306,1312]},"cbrt"]]],["app",{sourceInterval:[1321,1344]},"caseInsensitive",[["terminal",{sourceInterval:[1337,1343]},"ceil"]]],["app",{sourceInterval:[1352,1376]},"caseInsensitive",[["terminal",{sourceInterval:[1368,1375]},"clz32"]]],["app",{sourceInterval:[1384,1407]},"caseInsensitive",[["terminal",{sourceInterval:[1400,1406]},"cosh"]]],["app",{sourceInterval:[1415,1437]},"caseInsensitive",[["terminal",{sourceInterval:[1431,1436]},"cos"]]],["app",{sourceInterval:[1445,1469]},"caseInsensitive",[["terminal",{sourceInterval:[1461,1468]},"expm1"]]],["app",{sourceInterval:[1477,1499]},"caseInsensitive",[["terminal",{sourceInterval:[1493,1498]},"exp"]]],["app",{sourceInterval:[1507,1531]},"caseInsensitive",[["terminal",{sourceInterval:[1523,1530]},"floor"]]],["app",{sourceInterval:[1539,1564]},"caseInsensitive",[["terminal",{sourceInterval:[1555,1563]},"fround"]]],["app",{sourceInterval:[1572,1596]},"caseInsensitive",[["terminal",{sourceInterval:[1588,1595]},"hypot"]]],["app",{sourceInterval:[1604,1627]},"caseInsensitive",[["terminal",{sourceInterval:[1620,1626]},"imul"]]],["app",{sourceInterval:[1635,1659]},"caseInsensitive",[["terminal",{sourceInterval:[1651,1658]},"log10"]]],["app",{sourceInterval:[1667,1691]},"caseInsensitive",[["terminal",{sourceInterval:[1683,1690]},"log1p"]]],["app",{sourceInterval:[1699,1722]},"caseInsensitive",[["terminal",{sourceInterval:[1715,1721]},"log2"]]],["app",{sourceInterval:[1730,1752]},"caseInsensitive",[["terminal",{sourceInterval:[1746,1751]},"log"]]],["app",{sourceInterval:[1760,1782]},"caseInsensitive",[["terminal",{sourceInterval:[1776,1781]},"max"]]],["app",{sourceInterval:[1790,1812]},"caseInsensitive",[["terminal",{sourceInterval:[1806,1811]},"min"]]],["app",{sourceInterval:[1820,1842]},"caseInsensitive",[["terminal",{sourceInterval:[1836,1841]},"pow"]]],["app",{sourceInterval:[1850,1875]},"caseInsensitive",[["terminal",{sourceInterval:[1866,1874]},"random"]]],["app",{sourceInterval:[1883,1907]},"caseInsensitive",[["terminal",{sourceInterval:[1899,1906]},"round"]]],["app",{sourceInterval:[1915,1938]},"caseInsensitive",[["terminal",{sourceInterval:[1931,1937]},"sign"]]],["app",{sourceInterval:[1946,1969]},"caseInsensitive",[["terminal",{sourceInterval:[1962,1968]},"sqrt"]]],["app",{sourceInterval:[1977,2e3]},"caseInsensitive",[["terminal",{sourceInterval:[1993,1999]},"tanh"]]],["app",{sourceInterval:[2008,2030]},"caseInsensitive",[["terminal",{sourceInterval:[2024,2029]},"tan"]]],["app",{sourceInterval:[2038,2062]},"caseInsensitive",[["terminal",{sourceInterval:[2054,2061]},"trunc"]]]]]}]);pc.exports=Kn});var gc=E((X3,Ic)=>{"use strict";var{makeRecipe:fc}=Qe(),Jn={};Jn.BasicArithmetic=fc(["grammar",{source:`BasicArithmetic {\r + Expression\r + = LogicalShift\r +\r + LogicalShift\r + = LogicalShift "<<" LogicalShift -- left\r + | LogicalShift ">>" LogicalShift -- right\r + | AS \r +\r + // Addition or Subtraction\r + AS\r + = AS add MD -- addition\r + | AS subtract MD -- subtraction\r + | MD\r +\r + // Multiply or Divide\r + MD\r + = MD multiply E -- multiplication\r + | MD divide E -- division\r + | MD modulo E -- modulo\r + | E\r +\r + // Exponent\r + E\r + = P exponent E -- exponent\r + | P\r +\r + // Parenthesis\r + P\r + = "(" Expression ")" -- parenthesis\r + | Primitive\r + \r + Primitive\r + = "+" Primitive -- positive\r + | "-" Primitive -- negative\r + | constant\r + | hex\r + | number\r + \r + // Lexical Rules\r + add \r + = "+"\r + | caseInsensitive<"plus">\r + | caseInsensitive<"add">\r + | caseInsensitive<"and">\r + \r + subtract \r + = "-"\r + | caseInsensitive<"minus">\r + | caseInsensitive<"subtract">\r + | caseInsensitive<"remove">\r + | caseInsensitive<"take">\r + \r + multiply \r + = "*"\r + | "\\\\*" // Escaped \\* for markdown\r + | "\\u{00D7}" // \xD7\r + | caseInsensitive<"x">\r + | caseInsensitive<"times by">\r + | caseInsensitive<"times">\r + | caseInsensitive<"multiply by">\r + | caseInsensitive<"multiply">\r + \r + divide\r + = "/"\r + | "\\u{00F7}" // \xF7\r + | caseInsensitive<"divide by">\r + | caseInsensitive<"divide">\r +\r + modulo\r + = "%"\r + | caseInsensitive<"modulo">\r + | caseInsensitive<"mod">\r +\r + exponent\r + = "^"\r + | caseInsensitive<"to the power of">\r + | caseInsensitive<"power of">\r + | caseInsensitive<"exponent">\r + | caseInsensitive<"prime">\r +\r + constant \r + = caseInsensitive<"PI"> \r + | caseInsensitive<"E">\r +\r + // Lazy: It will match anything like 1214.200.2442,200 the visitor decides how to interpret\r + number\r + = (separator? digit)+\r +\r + // The separator can be a comma or a period, detected in the visitor\r + separator\r + = "." | ","\r +\r + whole\r + = digit+\r +\r + hex\r + = "0x" hexDigit+\r + | hexDigit+ "h"\r +}`},"BasicArithmetic",null,"Expression",{Expression:["define",{sourceInterval:[21,51]},null,[],["app",{sourceInterval:[39,51]},"LogicalShift",[]]],LogicalShift_left:["define",{sourceInterval:[77,115]},null,[],["seq",{sourceInterval:[77,107]},["app",{sourceInterval:[77,89]},"LogicalShift",[]],["terminal",{sourceInterval:[90,94]},"<<"],["app",{sourceInterval:[95,107]},"LogicalShift",[]]]],LogicalShift_right:["define",{sourceInterval:[123,162]},null,[],["seq",{sourceInterval:[123,153]},["app",{sourceInterval:[123,135]},"LogicalShift",[]],["terminal",{sourceInterval:[136,140]},">>"],["app",{sourceInterval:[141,153]},"LogicalShift",[]]]],LogicalShift:["define",{sourceInterval:[57,172]},null,[],["alt",{sourceInterval:[77,172]},["app",{sourceInterval:[77,107]},"LogicalShift_left",[]],["app",{sourceInterval:[123,153]},"LogicalShift_right",[]],["app",{sourceInterval:[170,172]},"AS",[]]]],AS_addition:["define",{sourceInterval:[219,241]},null,[],["seq",{sourceInterval:[219,228]},["app",{sourceInterval:[219,221]},"AS",[]],["app",{sourceInterval:[222,225]},"add",[]],["app",{sourceInterval:[226,228]},"MD",[]]]],AS_subtraction:["define",{sourceInterval:[249,279]},null,[],["seq",{sourceInterval:[249,263]},["app",{sourceInterval:[249,251]},"AS",[]],["app",{sourceInterval:[252,260]},"subtract",[]],["app",{sourceInterval:[261,263]},"MD",[]]]],AS:["define",{sourceInterval:[209,289]},null,[],["alt",{sourceInterval:[219,289]},["app",{sourceInterval:[219,228]},"AS_addition",[]],["app",{sourceInterval:[249,263]},"AS_subtraction",[]],["app",{sourceInterval:[287,289]},"MD",[]]]],MD_multiplication:["define",{sourceInterval:[330,362]},null,[],["seq",{sourceInterval:[330,343]},["app",{sourceInterval:[330,332]},"MD",[]],["app",{sourceInterval:[333,341]},"multiply",[]],["app",{sourceInterval:[342,343]},"E",[]]]],MD_division:["define",{sourceInterval:[370,394]},null,[],["seq",{sourceInterval:[370,381]},["app",{sourceInterval:[370,372]},"MD",[]],["app",{sourceInterval:[373,379]},"divide",[]],["app",{sourceInterval:[380,381]},"E",[]]]],MD_modulo:["define",{sourceInterval:[402,424]},null,[],["seq",{sourceInterval:[402,413]},["app",{sourceInterval:[402,404]},"MD",[]],["app",{sourceInterval:[405,411]},"modulo",[]],["app",{sourceInterval:[412,413]},"E",[]]]],MD:["define",{sourceInterval:[320,433]},null,[],["alt",{sourceInterval:[330,433]},["app",{sourceInterval:[330,343]},"MD_multiplication",[]],["app",{sourceInterval:[370,381]},"MD_division",[]],["app",{sourceInterval:[402,413]},"MD_modulo",[]],["app",{sourceInterval:[432,433]},"E",[]]]],E_exponent:["define",{sourceInterval:[463,488]},null,[],["seq",{sourceInterval:[463,475]},["app",{sourceInterval:[463,464]},"P",[]],["app",{sourceInterval:[465,473]},"exponent",[]],["app",{sourceInterval:[474,475]},"E",[]]]],E:["define",{sourceInterval:[454,497]},null,[],["alt",{sourceInterval:[463,497]},["app",{sourceInterval:[463,475]},"E_exponent",[]],["app",{sourceInterval:[496,497]},"P",[]]]],P_parenthesis:["define",{sourceInterval:[530,564]},null,[],["seq",{sourceInterval:[530,548]},["terminal",{sourceInterval:[530,533]},"("],["app",{sourceInterval:[534,544]},"Expression",[]],["terminal",{sourceInterval:[545,548]},")"]]],P:["define",{sourceInterval:[521,581]},null,[],["alt",{sourceInterval:[530,581]},["app",{sourceInterval:[530,548]},"P_parenthesis",[]],["app",{sourceInterval:[572,581]},"Primitive",[]]]],Primitive_positive:["define",{sourceInterval:[608,633]},null,[],["seq",{sourceInterval:[608,621]},["terminal",{sourceInterval:[608,611]},"+"],["app",{sourceInterval:[612,621]},"Primitive",[]]]],Primitive_negative:["define",{sourceInterval:[641,666]},null,[],["seq",{sourceInterval:[641,654]},["terminal",{sourceInterval:[641,644]},"-"],["app",{sourceInterval:[645,654]},"Primitive",[]]]],Primitive:["define",{sourceInterval:[591,707]},null,[],["alt",{sourceInterval:[608,707]},["app",{sourceInterval:[608,621]},"Primitive_positive",[]],["app",{sourceInterval:[641,654]},"Primitive_negative",[]],["app",{sourceInterval:[674,682]},"constant",[]],["app",{sourceInterval:[690,693]},"hex",[]],["app",{sourceInterval:[701,707]},"number",[]]]],add:["define",{sourceInterval:[734,838]},null,[],["alt",{sourceInterval:[745,838]},["terminal",{sourceInterval:[745,748]},"+"],["app",{sourceInterval:[756,779]},"caseInsensitive",[["terminal",{sourceInterval:[772,778]},"plus"]]],["app",{sourceInterval:[786,808]},"caseInsensitive",[["terminal",{sourceInterval:[802,807]},"add"]]],["app",{sourceInterval:[816,838]},"caseInsensitive",[["terminal",{sourceInterval:[832,837]},"and"]]]]],subtract:["define",{sourceInterval:[848,999]},null,[],["alt",{sourceInterval:[865,999]},["terminal",{sourceInterval:[865,868]},"-"],["app",{sourceInterval:[876,900]},"caseInsensitive",[["terminal",{sourceInterval:[892,899]},"minus"]]],["app",{sourceInterval:[908,935]},"caseInsensitive",[["terminal",{sourceInterval:[924,934]},"subtract"]]],["app",{sourceInterval:[943,968]},"caseInsensitive",[["terminal",{sourceInterval:[959,967]},"remove"]]],["app",{sourceInterval:[976,999]},"caseInsensitive",[["terminal",{sourceInterval:[992,998]},"take"]]]]],multiply:["define",{sourceInterval:[1011,1262]},null,[],["alt",{sourceInterval:[1028,1262]},["terminal",{sourceInterval:[1028,1031]},"*"],["terminal",{sourceInterval:[1039,1044]},"\\*"],["terminal",{sourceInterval:[1079,1089]},"\xD7"],["app",{sourceInterval:[1102,1122]},"caseInsensitive",[["terminal",{sourceInterval:[1118,1121]},"x"]]],["app",{sourceInterval:[1130,1157]},"caseInsensitive",[["terminal",{sourceInterval:[1146,1156]},"times by"]]],["app",{sourceInterval:[1165,1189]},"caseInsensitive",[["terminal",{sourceInterval:[1181,1188]},"times"]]],["app",{sourceInterval:[1197,1227]},"caseInsensitive",[["terminal",{sourceInterval:[1213,1226]},"multiply by"]]],["app",{sourceInterval:[1235,1262]},"caseInsensitive",[["terminal",{sourceInterval:[1251,1261]},"multiply"]]]]],divide:["define",{sourceInterval:[1274,1383]},null,[],["alt",{sourceInterval:[1288,1383]},["terminal",{sourceInterval:[1288,1291]},"/"],["terminal",{sourceInterval:[1299,1309]},"\xF7"],["app",{sourceInterval:[1322,1350]},"caseInsensitive",[["terminal",{sourceInterval:[1338,1349]},"divide by"]]],["app",{sourceInterval:[1358,1383]},"caseInsensitive",[["terminal",{sourceInterval:[1374,1382]},"divide"]]]]],modulo:["define",{sourceInterval:[1389,1469]},null,[],["alt",{sourceInterval:[1403,1469]},["terminal",{sourceInterval:[1403,1406]},"%"],["app",{sourceInterval:[1414,1439]},"caseInsensitive",[["terminal",{sourceInterval:[1430,1438]},"modulo"]]],["app",{sourceInterval:[1447,1469]},"caseInsensitive",[["terminal",{sourceInterval:[1463,1468]},"mod"]]]]],exponent:["define",{sourceInterval:[1475,1638]},null,[],["alt",{sourceInterval:[1491,1638]},["terminal",{sourceInterval:[1491,1494]},"^"],["app",{sourceInterval:[1502,1536]},"caseInsensitive",[["terminal",{sourceInterval:[1518,1535]},"to the power of"]]],["app",{sourceInterval:[1544,1571]},"caseInsensitive",[["terminal",{sourceInterval:[1560,1570]},"power of"]]],["app",{sourceInterval:[1579,1606]},"caseInsensitive",[["terminal",{sourceInterval:[1595,1605]},"exponent"]]],["app",{sourceInterval:[1614,1638]},"caseInsensitive",[["terminal",{sourceInterval:[1630,1637]},"prime"]]]]],constant:["define",{sourceInterval:[1644,1711]},null,[],["alt",{sourceInterval:[1661,1711]},["app",{sourceInterval:[1661,1682]},"caseInsensitive",[["terminal",{sourceInterval:[1677,1681]},"PI"]]],["app",{sourceInterval:[1691,1711]},"caseInsensitive",[["terminal",{sourceInterval:[1707,1710]},"E"]]]]],number:["define",{sourceInterval:[1812,1845]},null,[],["plus",{sourceInterval:[1826,1845]},["seq",{sourceInterval:[1827,1843]},["opt",{sourceInterval:[1827,1837]},["app",{sourceInterval:[1827,1836]},"separator",[]]],["app",{sourceInterval:[1838,1843]},"digit",[]]]]],separator:["define",{sourceInterval:[1923,1949]},null,[],["alt",{sourceInterval:[1940,1949]},["terminal",{sourceInterval:[1940,1943]},"."],["terminal",{sourceInterval:[1946,1949]},","]]],whole:["define",{sourceInterval:[1955,1974]},null,[],["plus",{sourceInterval:[1968,1974]},["app",{sourceInterval:[1968,1973]},"digit",[]]]],hex:["define",{sourceInterval:[1980,2026]},null,[],["alt",{sourceInterval:[1991,2026]},["seq",{sourceInterval:[1991,2005]},["terminal",{sourceInterval:[1991,1995]},"0x"],["plus",{sourceInterval:[1996,2005]},["app",{sourceInterval:[1996,2004]},"hexDigit",[]]]],["seq",{sourceInterval:[2013,2026]},["plus",{sourceInterval:[2013,2022]},["app",{sourceInterval:[2013,2021]},"hexDigit",[]]],["terminal",{sourceInterval:[2023,2026]},"h"]]]]}]);Jn.PercentageArithmetic=fc(["grammar",{source:`PercentageArithmetic <: BasicArithmetic {\r + Expression\r + := PercentageOf\r + | IncreaseBy\r + | DecreaseBy\r + | PercentageIncreaseOrDecrease\r + | LogicalShift\r + \r + Primitive \r + += percentage\r + \r + PercentageOf\r + = percentage caseInsensitive<"of"> number \r + \r + IncreaseBy\r + = caseInsensitive<"increase"> number caseInsensitive<"by"> percentage\r + \r + DecreaseBy\r + = caseInsensitive<"decrease"> number caseInsensitive<"by"> percentage\r + \r + PercentageIncreaseOrDecrease\r + = caseInsensitive<"from">? number caseInsensitive<"to"> number\r +\r + percentage = number "%"\r +}`},"PercentageArithmetic",Jn.BasicArithmetic,"Expression",{Expression:["override",{sourceInterval:[44,179]},null,[],["alt",{sourceInterval:[65,179]},["app",{sourceInterval:[65,77]},"PercentageOf",[]],["app",{sourceInterval:[89,99]},"IncreaseBy",[]],["app",{sourceInterval:[111,121]},"DecreaseBy",[]],["app",{sourceInterval:[133,161]},"PercentageIncreaseOrDecrease",[]],["app",{sourceInterval:[167,179]},"LogicalShift",[]]]],Primitive:["extend",{sourceInterval:[195,228]},null,[],["app",{sourceInterval:[218,228]},"percentage",[]]],PercentageOf:["define",{sourceInterval:[244,304]},null,[],["seq",{sourceInterval:[265,304]},["app",{sourceInterval:[265,275]},"percentage",[]],["app",{sourceInterval:[276,297]},"caseInsensitive",[["terminal",{sourceInterval:[292,296]},"of"]]],["app",{sourceInterval:[298,304]},"number",[]]]],IncreaseBy:["define",{sourceInterval:[321,407]},null,[],["seq",{sourceInterval:[340,407]},["app",{sourceInterval:[340,367]},"caseInsensitive",[["terminal",{sourceInterval:[356,366]},"increase"]]],["app",{sourceInterval:[368,374]},"number",[]],["app",{sourceInterval:[375,396]},"caseInsensitive",[["terminal",{sourceInterval:[391,395]},"by"]]],["app",{sourceInterval:[397,407]},"percentage",[]]]],DecreaseBy:["define",{sourceInterval:[423,509]},null,[],["seq",{sourceInterval:[442,509]},["app",{sourceInterval:[442,469]},"caseInsensitive",[["terminal",{sourceInterval:[458,468]},"decrease"]]],["app",{sourceInterval:[470,476]},"number",[]],["app",{sourceInterval:[477,498]},"caseInsensitive",[["terminal",{sourceInterval:[493,497]},"by"]]],["app",{sourceInterval:[499,509]},"percentage",[]]]],PercentageIncreaseOrDecrease:["define",{sourceInterval:[521,621]},null,[],["seq",{sourceInterval:[561,621]},["opt",{sourceInterval:[561,585]},["app",{sourceInterval:[561,584]},"caseInsensitive",[["terminal",{sourceInterval:[577,583]},"from"]]]],["app",{sourceInterval:[586,592]},"number",[]],["app",{sourceInterval:[593,614]},"caseInsensitive",[["terminal",{sourceInterval:[609,613]},"to"]]],["app",{sourceInterval:[615,621]},"number",[]]]],percentage:["define",{sourceInterval:[629,652]},null,[],["seq",{sourceInterval:[642,652]},["app",{sourceInterval:[642,648]},"number",[]],["terminal",{sourceInterval:[649,652]},"%"]]]}]);Ic.exports=Jn});var Sc=E((O4,_c)=>{"use strict";var{makeRecipe:yc}=Qe(),ns={};ns.BasicArithmetic=yc(["grammar",{source:`BasicArithmetic {\r + Expression\r + = LogicalShift\r +\r + LogicalShift\r + = LogicalShift "<<" LogicalShift -- left\r + | LogicalShift ">>" LogicalShift -- right\r + | AS \r +\r + // Addition or Subtraction\r + AS\r + = AS add MD -- addition\r + | AS subtract MD -- subtraction\r + | MD\r +\r + // Multiply or Divide\r + MD\r + = MD multiply E -- multiplication\r + | MD divide E -- division\r + | MD modulo E -- modulo\r + | E\r +\r + // Exponent\r + E\r + = P exponent E -- exponent\r + | P\r +\r + // Parenthesis\r + P\r + = "(" Expression ")" -- parenthesis\r + | Primitive\r + \r + Primitive\r + = "+" Primitive -- positive\r + | "-" Primitive -- negative\r + | constant\r + | hex\r + | number\r + \r + // Lexical Rules\r + add \r + = "+"\r + | caseInsensitive<"plus">\r + | caseInsensitive<"add">\r + | caseInsensitive<"and">\r + \r + subtract \r + = "-"\r + | caseInsensitive<"minus">\r + | caseInsensitive<"subtract">\r + | caseInsensitive<"remove">\r + | caseInsensitive<"take">\r + \r + multiply \r + = "*"\r + | "\\\\*" // Escaped \\* for markdown\r + | "\\u{00D7}" // \xD7\r + | caseInsensitive<"x">\r + | caseInsensitive<"times by">\r + | caseInsensitive<"times">\r + | caseInsensitive<"multiply by">\r + | caseInsensitive<"multiply">\r + \r + divide\r + = "/"\r + | "\\u{00F7}" // \xF7\r + | caseInsensitive<"divide by">\r + | caseInsensitive<"divide">\r +\r + modulo\r + = "%"\r + | caseInsensitive<"modulo">\r + | caseInsensitive<"mod">\r +\r + exponent\r + = "^"\r + | caseInsensitive<"to the power of">\r + | caseInsensitive<"power of">\r + | caseInsensitive<"exponent">\r + | caseInsensitive<"prime">\r +\r + constant \r + = caseInsensitive<"PI"> \r + | caseInsensitive<"E">\r +\r + // Lazy: It will match anything like 1214.200.2442,200 the visitor decides how to interpret\r + number\r + = (separator? digit)+\r +\r + // The separator can be a comma or a period, detected in the visitor\r + separator\r + = "." | ","\r +\r + whole\r + = digit+\r +\r + hex\r + = "0x" hexDigit+\r + | hexDigit+ "h"\r +}`},"BasicArithmetic",null,"Expression",{Expression:["define",{sourceInterval:[21,51]},null,[],["app",{sourceInterval:[39,51]},"LogicalShift",[]]],LogicalShift_left:["define",{sourceInterval:[77,115]},null,[],["seq",{sourceInterval:[77,107]},["app",{sourceInterval:[77,89]},"LogicalShift",[]],["terminal",{sourceInterval:[90,94]},"<<"],["app",{sourceInterval:[95,107]},"LogicalShift",[]]]],LogicalShift_right:["define",{sourceInterval:[123,162]},null,[],["seq",{sourceInterval:[123,153]},["app",{sourceInterval:[123,135]},"LogicalShift",[]],["terminal",{sourceInterval:[136,140]},">>"],["app",{sourceInterval:[141,153]},"LogicalShift",[]]]],LogicalShift:["define",{sourceInterval:[57,172]},null,[],["alt",{sourceInterval:[77,172]},["app",{sourceInterval:[77,107]},"LogicalShift_left",[]],["app",{sourceInterval:[123,153]},"LogicalShift_right",[]],["app",{sourceInterval:[170,172]},"AS",[]]]],AS_addition:["define",{sourceInterval:[219,241]},null,[],["seq",{sourceInterval:[219,228]},["app",{sourceInterval:[219,221]},"AS",[]],["app",{sourceInterval:[222,225]},"add",[]],["app",{sourceInterval:[226,228]},"MD",[]]]],AS_subtraction:["define",{sourceInterval:[249,279]},null,[],["seq",{sourceInterval:[249,263]},["app",{sourceInterval:[249,251]},"AS",[]],["app",{sourceInterval:[252,260]},"subtract",[]],["app",{sourceInterval:[261,263]},"MD",[]]]],AS:["define",{sourceInterval:[209,289]},null,[],["alt",{sourceInterval:[219,289]},["app",{sourceInterval:[219,228]},"AS_addition",[]],["app",{sourceInterval:[249,263]},"AS_subtraction",[]],["app",{sourceInterval:[287,289]},"MD",[]]]],MD_multiplication:["define",{sourceInterval:[330,362]},null,[],["seq",{sourceInterval:[330,343]},["app",{sourceInterval:[330,332]},"MD",[]],["app",{sourceInterval:[333,341]},"multiply",[]],["app",{sourceInterval:[342,343]},"E",[]]]],MD_division:["define",{sourceInterval:[370,394]},null,[],["seq",{sourceInterval:[370,381]},["app",{sourceInterval:[370,372]},"MD",[]],["app",{sourceInterval:[373,379]},"divide",[]],["app",{sourceInterval:[380,381]},"E",[]]]],MD_modulo:["define",{sourceInterval:[402,424]},null,[],["seq",{sourceInterval:[402,413]},["app",{sourceInterval:[402,404]},"MD",[]],["app",{sourceInterval:[405,411]},"modulo",[]],["app",{sourceInterval:[412,413]},"E",[]]]],MD:["define",{sourceInterval:[320,433]},null,[],["alt",{sourceInterval:[330,433]},["app",{sourceInterval:[330,343]},"MD_multiplication",[]],["app",{sourceInterval:[370,381]},"MD_division",[]],["app",{sourceInterval:[402,413]},"MD_modulo",[]],["app",{sourceInterval:[432,433]},"E",[]]]],E_exponent:["define",{sourceInterval:[463,488]},null,[],["seq",{sourceInterval:[463,475]},["app",{sourceInterval:[463,464]},"P",[]],["app",{sourceInterval:[465,473]},"exponent",[]],["app",{sourceInterval:[474,475]},"E",[]]]],E:["define",{sourceInterval:[454,497]},null,[],["alt",{sourceInterval:[463,497]},["app",{sourceInterval:[463,475]},"E_exponent",[]],["app",{sourceInterval:[496,497]},"P",[]]]],P_parenthesis:["define",{sourceInterval:[530,564]},null,[],["seq",{sourceInterval:[530,548]},["terminal",{sourceInterval:[530,533]},"("],["app",{sourceInterval:[534,544]},"Expression",[]],["terminal",{sourceInterval:[545,548]},")"]]],P:["define",{sourceInterval:[521,581]},null,[],["alt",{sourceInterval:[530,581]},["app",{sourceInterval:[530,548]},"P_parenthesis",[]],["app",{sourceInterval:[572,581]},"Primitive",[]]]],Primitive_positive:["define",{sourceInterval:[608,633]},null,[],["seq",{sourceInterval:[608,621]},["terminal",{sourceInterval:[608,611]},"+"],["app",{sourceInterval:[612,621]},"Primitive",[]]]],Primitive_negative:["define",{sourceInterval:[641,666]},null,[],["seq",{sourceInterval:[641,654]},["terminal",{sourceInterval:[641,644]},"-"],["app",{sourceInterval:[645,654]},"Primitive",[]]]],Primitive:["define",{sourceInterval:[591,707]},null,[],["alt",{sourceInterval:[608,707]},["app",{sourceInterval:[608,621]},"Primitive_positive",[]],["app",{sourceInterval:[641,654]},"Primitive_negative",[]],["app",{sourceInterval:[674,682]},"constant",[]],["app",{sourceInterval:[690,693]},"hex",[]],["app",{sourceInterval:[701,707]},"number",[]]]],add:["define",{sourceInterval:[734,838]},null,[],["alt",{sourceInterval:[745,838]},["terminal",{sourceInterval:[745,748]},"+"],["app",{sourceInterval:[756,779]},"caseInsensitive",[["terminal",{sourceInterval:[772,778]},"plus"]]],["app",{sourceInterval:[786,808]},"caseInsensitive",[["terminal",{sourceInterval:[802,807]},"add"]]],["app",{sourceInterval:[816,838]},"caseInsensitive",[["terminal",{sourceInterval:[832,837]},"and"]]]]],subtract:["define",{sourceInterval:[848,999]},null,[],["alt",{sourceInterval:[865,999]},["terminal",{sourceInterval:[865,868]},"-"],["app",{sourceInterval:[876,900]},"caseInsensitive",[["terminal",{sourceInterval:[892,899]},"minus"]]],["app",{sourceInterval:[908,935]},"caseInsensitive",[["terminal",{sourceInterval:[924,934]},"subtract"]]],["app",{sourceInterval:[943,968]},"caseInsensitive",[["terminal",{sourceInterval:[959,967]},"remove"]]],["app",{sourceInterval:[976,999]},"caseInsensitive",[["terminal",{sourceInterval:[992,998]},"take"]]]]],multiply:["define",{sourceInterval:[1011,1262]},null,[],["alt",{sourceInterval:[1028,1262]},["terminal",{sourceInterval:[1028,1031]},"*"],["terminal",{sourceInterval:[1039,1044]},"\\*"],["terminal",{sourceInterval:[1079,1089]},"\xD7"],["app",{sourceInterval:[1102,1122]},"caseInsensitive",[["terminal",{sourceInterval:[1118,1121]},"x"]]],["app",{sourceInterval:[1130,1157]},"caseInsensitive",[["terminal",{sourceInterval:[1146,1156]},"times by"]]],["app",{sourceInterval:[1165,1189]},"caseInsensitive",[["terminal",{sourceInterval:[1181,1188]},"times"]]],["app",{sourceInterval:[1197,1227]},"caseInsensitive",[["terminal",{sourceInterval:[1213,1226]},"multiply by"]]],["app",{sourceInterval:[1235,1262]},"caseInsensitive",[["terminal",{sourceInterval:[1251,1261]},"multiply"]]]]],divide:["define",{sourceInterval:[1274,1383]},null,[],["alt",{sourceInterval:[1288,1383]},["terminal",{sourceInterval:[1288,1291]},"/"],["terminal",{sourceInterval:[1299,1309]},"\xF7"],["app",{sourceInterval:[1322,1350]},"caseInsensitive",[["terminal",{sourceInterval:[1338,1349]},"divide by"]]],["app",{sourceInterval:[1358,1383]},"caseInsensitive",[["terminal",{sourceInterval:[1374,1382]},"divide"]]]]],modulo:["define",{sourceInterval:[1389,1469]},null,[],["alt",{sourceInterval:[1403,1469]},["terminal",{sourceInterval:[1403,1406]},"%"],["app",{sourceInterval:[1414,1439]},"caseInsensitive",[["terminal",{sourceInterval:[1430,1438]},"modulo"]]],["app",{sourceInterval:[1447,1469]},"caseInsensitive",[["terminal",{sourceInterval:[1463,1468]},"mod"]]]]],exponent:["define",{sourceInterval:[1475,1638]},null,[],["alt",{sourceInterval:[1491,1638]},["terminal",{sourceInterval:[1491,1494]},"^"],["app",{sourceInterval:[1502,1536]},"caseInsensitive",[["terminal",{sourceInterval:[1518,1535]},"to the power of"]]],["app",{sourceInterval:[1544,1571]},"caseInsensitive",[["terminal",{sourceInterval:[1560,1570]},"power of"]]],["app",{sourceInterval:[1579,1606]},"caseInsensitive",[["terminal",{sourceInterval:[1595,1605]},"exponent"]]],["app",{sourceInterval:[1614,1638]},"caseInsensitive",[["terminal",{sourceInterval:[1630,1637]},"prime"]]]]],constant:["define",{sourceInterval:[1644,1711]},null,[],["alt",{sourceInterval:[1661,1711]},["app",{sourceInterval:[1661,1682]},"caseInsensitive",[["terminal",{sourceInterval:[1677,1681]},"PI"]]],["app",{sourceInterval:[1691,1711]},"caseInsensitive",[["terminal",{sourceInterval:[1707,1710]},"E"]]]]],number:["define",{sourceInterval:[1812,1845]},null,[],["plus",{sourceInterval:[1826,1845]},["seq",{sourceInterval:[1827,1843]},["opt",{sourceInterval:[1827,1837]},["app",{sourceInterval:[1827,1836]},"separator",[]]],["app",{sourceInterval:[1838,1843]},"digit",[]]]]],separator:["define",{sourceInterval:[1923,1949]},null,[],["alt",{sourceInterval:[1940,1949]},["terminal",{sourceInterval:[1940,1943]},"."],["terminal",{sourceInterval:[1946,1949]},","]]],whole:["define",{sourceInterval:[1955,1974]},null,[],["plus",{sourceInterval:[1968,1974]},["app",{sourceInterval:[1968,1973]},"digit",[]]]],hex:["define",{sourceInterval:[1980,2026]},null,[],["alt",{sourceInterval:[1991,2026]},["seq",{sourceInterval:[1991,2005]},["terminal",{sourceInterval:[1991,1995]},"0x"],["plus",{sourceInterval:[1996,2005]},["app",{sourceInterval:[1996,2004]},"hexDigit",[]]]],["seq",{sourceInterval:[2013,2026]},["plus",{sourceInterval:[2013,2022]},["app",{sourceInterval:[2013,2021]},"hexDigit",[]]],["terminal",{sourceInterval:[2023,2026]},"h"]]]]}]);ns.UnitsOfMeasurementArithmetic=yc(["grammar",{source:`UnitsOfMeasurementArithmetic <: BasicArithmetic {\r + Expression\r + := \r + | Conversion\r + | ConversionPossiblities\r + | LogicalShift\r + \r + Primitive \r + += uom\r + | percentage\r + \r + Conversion\r + = caseInsensitive<"convert">? LogicalShift caseInsensitive<"to"> caseInsensitive<"best"> -- best\r + | caseInsensitive<"convert">? LogicalShift caseInsensitive<"to"> unit -- convert \r + \r + ConversionPossiblities\r + = caseInsensitive<"convert">? LogicalShift caseInsensitive<"to"> "?"?\r + \r + percentage \r + = number "%"\r + \r + // Important: The reason we include \`~("to" space+)\` is to prevent matching "t" or "torr" units when used in expression "convert 100g + 20 to g"\r + uom \r + = number spaces ~("to" ~"rr") spaces unit\r + \r + unit\r + = "km3/s"\r + | "yd3/h"\r + | "yd3/min"\r + | "yd3/s"\r + | "ft3/h"\r + | "ft3/min"\r + | "ft3/s"\r + | "in3/h"\r + | "in3/min"\r + | "in3/s"\r + | "mm3/s"\r + | "cm3/s"\r + | "fl-oz/h"\r + | "fl-oz/min"\r + | "fl-oz/s"\r + | "gal/h"\r + | "gal/min"\r + | "gal/s"\r + | "pnt/h"\r + | "pnt/min"\r + | "pnt/s"\r + | "cup/s"\r + | "Tbs/s"\r + | "tsp/s"\r + | "m3/h"\r + | "m3/min"\r + | "m3/s"\r + | "kl/h"\r + | "kl/min"\r + | "kl/s"\r + | "l/h"\r + | "l/min"\r + | "l/s"\r + | "dl/s"\r + | "cl/s"\r + | "ml/s"\r + | "min/km"\r + | "s/ft"\r + | "s/m"\r + | "km/h"\r + | "m/h"\r + | "ft/s"\r + | "m/s"\r + | "knot"\r + | "THz"\r + | "GHz"\r + | "MHz"\r + | "kHz"\r + | "mHz"\r + | "Hz"\r + | "rpm"\r + | "rad/s"\r + | "deg/s"\r + | "km3"\r + | "yd3"\r + | "ft3"\r + | "in3"\r + | "mm3"\r + | "cm3"\r + | "m3"\r + | "gal"\r + | "qt"\r + | "pnt"\r + | "cup"\r + | "fl-oz"\r + | "Tbs"\r + | "tsp"\r + | "kl"\r + | "lb"\r + | "lx"\r + | "l"\r + | "ml"\r + | "km2"\r + | "mi2"\r + | "mm2"\r + | "cm2"\r + | "m2"\r + | "in2"\r + | "ft2"\r + | "ha"\r + | "ac"\r + | "GVARh"\r + | "MVARh"\r + | "kVARh"\r + | "mVARh"\r + | "VARh"\r + | "GVAR"\r + | "MVAR"\r + | "kVAR"\r + | "mVAR"\r + | "VAR"\r + | "GVA"\r + | "MVA"\r + | "kVA"\r + | "mVA"\r + | "VA"\r + | "GWh"\r + | "MWh"\r + | "kWh"\r + | "mWh"\r + | "Wh"\r + | "GW"\r + | "MW"\r + | "kW"\r + | "mW"\r + | "W"\r + | "kJ"\r + | "J"\r + | "mcg"\r + | "kg"\r + | "grad"\r + | "g"\r + | "mg"\r + | "oz"\r + | "torr"\r + | "t"\r + | "mt"\r + | "month"\r + | "year"\r + | "week"\r + | "deg"\r + | "d"\r + | "hPa"\r + | "h"\r + | "min"\r + | "s"\r + | "ms"\r + | "mu"\r + | "ns"\r + | "kPa"\r + | "MPa"\r + | "bar"\r + | "psi"\r + | "ksi"\r + | "Pa"\r + | "ft-cd"\r + | "ppm"\r + | "ppb"\r + | "ppt"\r + | "ppq"\r + | "kV"\r + | "V"\r + | "mV"\r + | "kA"\r + | "A"\r + | "mA"\r + | "arcmin"\r + | "arcsec"\r + | "rad"\r + | "ft-us"\r + | "mi"\r + | "mm"\r + | "m"\r + | "cm"\r + | "yd"\r + | "km"\r + | "ft"\r + | "in"\r + | "F"\r + | "Kb"\r + | "KB"\r + | "K"\r + | "C"\r + | "R"\r + | "TB"\r + | "GB"\r + | "MB"\r + | "B"\r + | "Tb"\r + | "Gb"\r + | "Mb"\r + | "b"\r +}`},"UnitsOfMeasurementArithmetic",ns.BasicArithmetic,"Expression",{Expression:["override",{sourceInterval:[53,148]},null,[],["alt",{sourceInterval:[84,148]},["app",{sourceInterval:[86,96]},"Conversion",[]],["app",{sourceInterval:[108,130]},"ConversionPossiblities",[]],["app",{sourceInterval:[136,148]},"LogicalShift",[]]]],Primitive:["extend",{sourceInterval:[164,212]},null,[],["alt",{sourceInterval:[187,212]},["app",{sourceInterval:[187,190]},"uom",[]],["app",{sourceInterval:[202,212]},"percentage",[]]]],Conversion_best:["define",{sourceInterval:[247,341]},null,[],["seq",{sourceInterval:[247,333]},["opt",{sourceInterval:[247,274]},["app",{sourceInterval:[247,273]},"caseInsensitive",[["terminal",{sourceInterval:[263,272]},"convert"]]]],["app",{sourceInterval:[275,287]},"LogicalShift",[]],["app",{sourceInterval:[288,309]},"caseInsensitive",[["terminal",{sourceInterval:[304,308]},"to"]]],["app",{sourceInterval:[310,333]},"caseInsensitive",[["terminal",{sourceInterval:[326,332]},"best"]]]]],Conversion_convert:["define",{sourceInterval:[353,431]},null,[],["seq",{sourceInterval:[353,420]},["opt",{sourceInterval:[353,380]},["app",{sourceInterval:[353,379]},"caseInsensitive",[["terminal",{sourceInterval:[369,378]},"convert"]]]],["app",{sourceInterval:[381,393]},"LogicalShift",[]],["app",{sourceInterval:[394,415]},"caseInsensitive",[["terminal",{sourceInterval:[410,414]},"to"]]],["app",{sourceInterval:[416,420]},"unit",[]]]],Conversion:["define",{sourceInterval:[228,431]},null,[],["alt",{sourceInterval:[247,431]},["app",{sourceInterval:[247,333]},"Conversion_best",[]],["app",{sourceInterval:[353,420]},"Conversion_convert",[]]]],ConversionPossiblities:["define",{sourceInterval:[452,553]},null,[],["seq",{sourceInterval:[486,553]},["opt",{sourceInterval:[486,513]},["app",{sourceInterval:[486,512]},"caseInsensitive",[["terminal",{sourceInterval:[502,511]},"convert"]]]],["app",{sourceInterval:[514,526]},"LogicalShift",[]],["app",{sourceInterval:[527,548]},"caseInsensitive",[["terminal",{sourceInterval:[543,547]},"to"]]],["opt",{sourceInterval:[549,553]},["terminal",{sourceInterval:[549,552]},"?"]]]],percentage:["define",{sourceInterval:[565,598]},null,[],["seq",{sourceInterval:[588,598]},["app",{sourceInterval:[588,594]},"number",[]],["terminal",{sourceInterval:[595,598]},"%"]]],uom:["define",{sourceInterval:[760,815]},null,[],["seq",{sourceInterval:[776,815]},["app",{sourceInterval:[776,782]},"number",[]],["app",{sourceInterval:[783,789]},"spaces",[]],["not",{sourceInterval:[790,803]},["seq",{sourceInterval:[792,802]},["terminal",{sourceInterval:[792,796]},"to"],["not",{sourceInterval:[797,802]},["terminal",{sourceInterval:[798,802]},"rr"]]]],["app",{sourceInterval:[804,810]},"spaces",[]],["app",{sourceInterval:[811,815]},"unit",[]]]],unit:["define",{sourceInterval:[827,3800]},null,[],["alt",{sourceInterval:[843,3800]},["terminal",{sourceInterval:[843,850]},"km3/s"],["terminal",{sourceInterval:[862,869]},"yd3/h"],["terminal",{sourceInterval:[881,890]},"yd3/min"],["terminal",{sourceInterval:[902,909]},"yd3/s"],["terminal",{sourceInterval:[921,928]},"ft3/h"],["terminal",{sourceInterval:[940,949]},"ft3/min"],["terminal",{sourceInterval:[961,968]},"ft3/s"],["terminal",{sourceInterval:[980,987]},"in3/h"],["terminal",{sourceInterval:[999,1008]},"in3/min"],["terminal",{sourceInterval:[1020,1027]},"in3/s"],["terminal",{sourceInterval:[1039,1046]},"mm3/s"],["terminal",{sourceInterval:[1058,1065]},"cm3/s"],["terminal",{sourceInterval:[1077,1086]},"fl-oz/h"],["terminal",{sourceInterval:[1098,1109]},"fl-oz/min"],["terminal",{sourceInterval:[1121,1130]},"fl-oz/s"],["terminal",{sourceInterval:[1142,1149]},"gal/h"],["terminal",{sourceInterval:[1161,1170]},"gal/min"],["terminal",{sourceInterval:[1182,1189]},"gal/s"],["terminal",{sourceInterval:[1201,1208]},"pnt/h"],["terminal",{sourceInterval:[1220,1229]},"pnt/min"],["terminal",{sourceInterval:[1241,1248]},"pnt/s"],["terminal",{sourceInterval:[1260,1267]},"cup/s"],["terminal",{sourceInterval:[1279,1286]},"Tbs/s"],["terminal",{sourceInterval:[1298,1305]},"tsp/s"],["terminal",{sourceInterval:[1317,1323]},"m3/h"],["terminal",{sourceInterval:[1335,1343]},"m3/min"],["terminal",{sourceInterval:[1355,1361]},"m3/s"],["terminal",{sourceInterval:[1373,1379]},"kl/h"],["terminal",{sourceInterval:[1391,1399]},"kl/min"],["terminal",{sourceInterval:[1411,1417]},"kl/s"],["terminal",{sourceInterval:[1429,1434]},"l/h"],["terminal",{sourceInterval:[1446,1453]},"l/min"],["terminal",{sourceInterval:[1465,1470]},"l/s"],["terminal",{sourceInterval:[1482,1488]},"dl/s"],["terminal",{sourceInterval:[1500,1506]},"cl/s"],["terminal",{sourceInterval:[1518,1524]},"ml/s"],["terminal",{sourceInterval:[1536,1544]},"min/km"],["terminal",{sourceInterval:[1556,1562]},"s/ft"],["terminal",{sourceInterval:[1574,1579]},"s/m"],["terminal",{sourceInterval:[1591,1597]},"km/h"],["terminal",{sourceInterval:[1609,1614]},"m/h"],["terminal",{sourceInterval:[1626,1632]},"ft/s"],["terminal",{sourceInterval:[1644,1649]},"m/s"],["terminal",{sourceInterval:[1661,1667]},"knot"],["terminal",{sourceInterval:[1679,1684]},"THz"],["terminal",{sourceInterval:[1696,1701]},"GHz"],["terminal",{sourceInterval:[1713,1718]},"MHz"],["terminal",{sourceInterval:[1730,1735]},"kHz"],["terminal",{sourceInterval:[1747,1752]},"mHz"],["terminal",{sourceInterval:[1764,1768]},"Hz"],["terminal",{sourceInterval:[1780,1785]},"rpm"],["terminal",{sourceInterval:[1797,1804]},"rad/s"],["terminal",{sourceInterval:[1816,1823]},"deg/s"],["terminal",{sourceInterval:[1835,1840]},"km3"],["terminal",{sourceInterval:[1852,1857]},"yd3"],["terminal",{sourceInterval:[1869,1874]},"ft3"],["terminal",{sourceInterval:[1886,1891]},"in3"],["terminal",{sourceInterval:[1903,1908]},"mm3"],["terminal",{sourceInterval:[1920,1925]},"cm3"],["terminal",{sourceInterval:[1937,1941]},"m3"],["terminal",{sourceInterval:[1953,1958]},"gal"],["terminal",{sourceInterval:[1970,1974]},"qt"],["terminal",{sourceInterval:[1986,1991]},"pnt"],["terminal",{sourceInterval:[2003,2008]},"cup"],["terminal",{sourceInterval:[2020,2027]},"fl-oz"],["terminal",{sourceInterval:[2039,2044]},"Tbs"],["terminal",{sourceInterval:[2056,2061]},"tsp"],["terminal",{sourceInterval:[2073,2077]},"kl"],["terminal",{sourceInterval:[2089,2093]},"lb"],["terminal",{sourceInterval:[2105,2109]},"lx"],["terminal",{sourceInterval:[2121,2124]},"l"],["terminal",{sourceInterval:[2136,2140]},"ml"],["terminal",{sourceInterval:[2152,2157]},"km2"],["terminal",{sourceInterval:[2169,2174]},"mi2"],["terminal",{sourceInterval:[2186,2191]},"mm2"],["terminal",{sourceInterval:[2203,2208]},"cm2"],["terminal",{sourceInterval:[2220,2224]},"m2"],["terminal",{sourceInterval:[2236,2241]},"in2"],["terminal",{sourceInterval:[2253,2258]},"ft2"],["terminal",{sourceInterval:[2270,2274]},"ha"],["terminal",{sourceInterval:[2286,2290]},"ac"],["terminal",{sourceInterval:[2302,2309]},"GVARh"],["terminal",{sourceInterval:[2321,2328]},"MVARh"],["terminal",{sourceInterval:[2340,2347]},"kVARh"],["terminal",{sourceInterval:[2359,2366]},"mVARh"],["terminal",{sourceInterval:[2378,2384]},"VARh"],["terminal",{sourceInterval:[2396,2402]},"GVAR"],["terminal",{sourceInterval:[2414,2420]},"MVAR"],["terminal",{sourceInterval:[2432,2438]},"kVAR"],["terminal",{sourceInterval:[2450,2456]},"mVAR"],["terminal",{sourceInterval:[2468,2473]},"VAR"],["terminal",{sourceInterval:[2485,2490]},"GVA"],["terminal",{sourceInterval:[2502,2507]},"MVA"],["terminal",{sourceInterval:[2519,2524]},"kVA"],["terminal",{sourceInterval:[2536,2541]},"mVA"],["terminal",{sourceInterval:[2553,2557]},"VA"],["terminal",{sourceInterval:[2569,2574]},"GWh"],["terminal",{sourceInterval:[2586,2591]},"MWh"],["terminal",{sourceInterval:[2603,2608]},"kWh"],["terminal",{sourceInterval:[2620,2625]},"mWh"],["terminal",{sourceInterval:[2637,2641]},"Wh"],["terminal",{sourceInterval:[2653,2657]},"GW"],["terminal",{sourceInterval:[2669,2673]},"MW"],["terminal",{sourceInterval:[2685,2689]},"kW"],["terminal",{sourceInterval:[2701,2705]},"mW"],["terminal",{sourceInterval:[2717,2720]},"W"],["terminal",{sourceInterval:[2732,2736]},"kJ"],["terminal",{sourceInterval:[2748,2751]},"J"],["terminal",{sourceInterval:[2763,2768]},"mcg"],["terminal",{sourceInterval:[2780,2784]},"kg"],["terminal",{sourceInterval:[2796,2802]},"grad"],["terminal",{sourceInterval:[2814,2817]},"g"],["terminal",{sourceInterval:[2829,2833]},"mg"],["terminal",{sourceInterval:[2845,2849]},"oz"],["terminal",{sourceInterval:[2861,2867]},"torr"],["terminal",{sourceInterval:[2879,2882]},"t"],["terminal",{sourceInterval:[2894,2898]},"mt"],["terminal",{sourceInterval:[2910,2917]},"month"],["terminal",{sourceInterval:[2929,2935]},"year"],["terminal",{sourceInterval:[2947,2953]},"week"],["terminal",{sourceInterval:[2965,2970]},"deg"],["terminal",{sourceInterval:[2982,2985]},"d"],["terminal",{sourceInterval:[2997,3002]},"hPa"],["terminal",{sourceInterval:[3014,3017]},"h"],["terminal",{sourceInterval:[3029,3034]},"min"],["terminal",{sourceInterval:[3046,3049]},"s"],["terminal",{sourceInterval:[3061,3065]},"ms"],["terminal",{sourceInterval:[3077,3081]},"mu"],["terminal",{sourceInterval:[3093,3097]},"ns"],["terminal",{sourceInterval:[3109,3114]},"kPa"],["terminal",{sourceInterval:[3126,3131]},"MPa"],["terminal",{sourceInterval:[3143,3148]},"bar"],["terminal",{sourceInterval:[3160,3165]},"psi"],["terminal",{sourceInterval:[3177,3182]},"ksi"],["terminal",{sourceInterval:[3194,3198]},"Pa"],["terminal",{sourceInterval:[3210,3217]},"ft-cd"],["terminal",{sourceInterval:[3229,3234]},"ppm"],["terminal",{sourceInterval:[3246,3251]},"ppb"],["terminal",{sourceInterval:[3263,3268]},"ppt"],["terminal",{sourceInterval:[3280,3285]},"ppq"],["terminal",{sourceInterval:[3297,3301]},"kV"],["terminal",{sourceInterval:[3313,3316]},"V"],["terminal",{sourceInterval:[3328,3332]},"mV"],["terminal",{sourceInterval:[3344,3348]},"kA"],["terminal",{sourceInterval:[3360,3363]},"A"],["terminal",{sourceInterval:[3375,3379]},"mA"],["terminal",{sourceInterval:[3391,3399]},"arcmin"],["terminal",{sourceInterval:[3411,3419]},"arcsec"],["terminal",{sourceInterval:[3431,3436]},"rad"],["terminal",{sourceInterval:[3448,3455]},"ft-us"],["terminal",{sourceInterval:[3467,3471]},"mi"],["terminal",{sourceInterval:[3483,3487]},"mm"],["terminal",{sourceInterval:[3499,3502]},"m"],["terminal",{sourceInterval:[3514,3518]},"cm"],["terminal",{sourceInterval:[3530,3534]},"yd"],["terminal",{sourceInterval:[3546,3550]},"km"],["terminal",{sourceInterval:[3562,3566]},"ft"],["terminal",{sourceInterval:[3578,3582]},"in"],["terminal",{sourceInterval:[3594,3597]},"F"],["terminal",{sourceInterval:[3609,3613]},"Kb"],["terminal",{sourceInterval:[3625,3629]},"KB"],["terminal",{sourceInterval:[3641,3644]},"K"],["terminal",{sourceInterval:[3656,3659]},"C"],["terminal",{sourceInterval:[3671,3674]},"R"],["terminal",{sourceInterval:[3686,3690]},"TB"],["terminal",{sourceInterval:[3702,3706]},"GB"],["terminal",{sourceInterval:[3718,3722]},"MB"],["terminal",{sourceInterval:[3734,3737]},"B"],["terminal",{sourceInterval:[3749,3753]},"Tb"],["terminal",{sourceInterval:[3765,3769]},"Gb"],["terminal",{sourceInterval:[3781,3785]},"Mb"],["terminal",{sourceInterval:[3797,3800]},"b"]]]}]);_c.exports=ns});var wc=E((G4,bc)=>{"use strict";var{makeRecipe:xc}=Qe(),as={};as.BasicArithmetic=xc(["grammar",{source:`BasicArithmetic {\r + Expression\r + = LogicalShift\r +\r + LogicalShift\r + = LogicalShift "<<" LogicalShift -- left\r + | LogicalShift ">>" LogicalShift -- right\r + | AS \r +\r + // Addition or Subtraction\r + AS\r + = AS add MD -- addition\r + | AS subtract MD -- subtraction\r + | MD\r +\r + // Multiply or Divide\r + MD\r + = MD multiply E -- multiplication\r + | MD divide E -- division\r + | MD modulo E -- modulo\r + | E\r +\r + // Exponent\r + E\r + = P exponent E -- exponent\r + | P\r +\r + // Parenthesis\r + P\r + = "(" Expression ")" -- parenthesis\r + | Primitive\r + \r + Primitive\r + = "+" Primitive -- positive\r + | "-" Primitive -- negative\r + | constant\r + | hex\r + | number\r + \r + // Lexical Rules\r + add \r + = "+"\r + | caseInsensitive<"plus">\r + | caseInsensitive<"add">\r + | caseInsensitive<"and">\r + \r + subtract \r + = "-"\r + | caseInsensitive<"minus">\r + | caseInsensitive<"subtract">\r + | caseInsensitive<"remove">\r + | caseInsensitive<"take">\r + \r + multiply \r + = "*"\r + | "\\\\*" // Escaped \\* for markdown\r + | "\\u{00D7}" // \xD7\r + | caseInsensitive<"x">\r + | caseInsensitive<"times by">\r + | caseInsensitive<"times">\r + | caseInsensitive<"multiply by">\r + | caseInsensitive<"multiply">\r + \r + divide\r + = "/"\r + | "\\u{00F7}" // \xF7\r + | caseInsensitive<"divide by">\r + | caseInsensitive<"divide">\r +\r + modulo\r + = "%"\r + | caseInsensitive<"modulo">\r + | caseInsensitive<"mod">\r +\r + exponent\r + = "^"\r + | caseInsensitive<"to the power of">\r + | caseInsensitive<"power of">\r + | caseInsensitive<"exponent">\r + | caseInsensitive<"prime">\r +\r + constant \r + = caseInsensitive<"PI"> \r + | caseInsensitive<"E">\r +\r + // Lazy: It will match anything like 1214.200.2442,200 the visitor decides how to interpret\r + number\r + = (separator? digit)+\r +\r + // The separator can be a comma or a period, detected in the visitor\r + separator\r + = "." | ","\r +\r + whole\r + = digit+\r +\r + hex\r + = "0x" hexDigit+\r + | hexDigit+ "h"\r +}`},"BasicArithmetic",null,"Expression",{Expression:["define",{sourceInterval:[21,51]},null,[],["app",{sourceInterval:[39,51]},"LogicalShift",[]]],LogicalShift_left:["define",{sourceInterval:[77,115]},null,[],["seq",{sourceInterval:[77,107]},["app",{sourceInterval:[77,89]},"LogicalShift",[]],["terminal",{sourceInterval:[90,94]},"<<"],["app",{sourceInterval:[95,107]},"LogicalShift",[]]]],LogicalShift_right:["define",{sourceInterval:[123,162]},null,[],["seq",{sourceInterval:[123,153]},["app",{sourceInterval:[123,135]},"LogicalShift",[]],["terminal",{sourceInterval:[136,140]},">>"],["app",{sourceInterval:[141,153]},"LogicalShift",[]]]],LogicalShift:["define",{sourceInterval:[57,172]},null,[],["alt",{sourceInterval:[77,172]},["app",{sourceInterval:[77,107]},"LogicalShift_left",[]],["app",{sourceInterval:[123,153]},"LogicalShift_right",[]],["app",{sourceInterval:[170,172]},"AS",[]]]],AS_addition:["define",{sourceInterval:[219,241]},null,[],["seq",{sourceInterval:[219,228]},["app",{sourceInterval:[219,221]},"AS",[]],["app",{sourceInterval:[222,225]},"add",[]],["app",{sourceInterval:[226,228]},"MD",[]]]],AS_subtraction:["define",{sourceInterval:[249,279]},null,[],["seq",{sourceInterval:[249,263]},["app",{sourceInterval:[249,251]},"AS",[]],["app",{sourceInterval:[252,260]},"subtract",[]],["app",{sourceInterval:[261,263]},"MD",[]]]],AS:["define",{sourceInterval:[209,289]},null,[],["alt",{sourceInterval:[219,289]},["app",{sourceInterval:[219,228]},"AS_addition",[]],["app",{sourceInterval:[249,263]},"AS_subtraction",[]],["app",{sourceInterval:[287,289]},"MD",[]]]],MD_multiplication:["define",{sourceInterval:[330,362]},null,[],["seq",{sourceInterval:[330,343]},["app",{sourceInterval:[330,332]},"MD",[]],["app",{sourceInterval:[333,341]},"multiply",[]],["app",{sourceInterval:[342,343]},"E",[]]]],MD_division:["define",{sourceInterval:[370,394]},null,[],["seq",{sourceInterval:[370,381]},["app",{sourceInterval:[370,372]},"MD",[]],["app",{sourceInterval:[373,379]},"divide",[]],["app",{sourceInterval:[380,381]},"E",[]]]],MD_modulo:["define",{sourceInterval:[402,424]},null,[],["seq",{sourceInterval:[402,413]},["app",{sourceInterval:[402,404]},"MD",[]],["app",{sourceInterval:[405,411]},"modulo",[]],["app",{sourceInterval:[412,413]},"E",[]]]],MD:["define",{sourceInterval:[320,433]},null,[],["alt",{sourceInterval:[330,433]},["app",{sourceInterval:[330,343]},"MD_multiplication",[]],["app",{sourceInterval:[370,381]},"MD_division",[]],["app",{sourceInterval:[402,413]},"MD_modulo",[]],["app",{sourceInterval:[432,433]},"E",[]]]],E_exponent:["define",{sourceInterval:[463,488]},null,[],["seq",{sourceInterval:[463,475]},["app",{sourceInterval:[463,464]},"P",[]],["app",{sourceInterval:[465,473]},"exponent",[]],["app",{sourceInterval:[474,475]},"E",[]]]],E:["define",{sourceInterval:[454,497]},null,[],["alt",{sourceInterval:[463,497]},["app",{sourceInterval:[463,475]},"E_exponent",[]],["app",{sourceInterval:[496,497]},"P",[]]]],P_parenthesis:["define",{sourceInterval:[530,564]},null,[],["seq",{sourceInterval:[530,548]},["terminal",{sourceInterval:[530,533]},"("],["app",{sourceInterval:[534,544]},"Expression",[]],["terminal",{sourceInterval:[545,548]},")"]]],P:["define",{sourceInterval:[521,581]},null,[],["alt",{sourceInterval:[530,581]},["app",{sourceInterval:[530,548]},"P_parenthesis",[]],["app",{sourceInterval:[572,581]},"Primitive",[]]]],Primitive_positive:["define",{sourceInterval:[608,633]},null,[],["seq",{sourceInterval:[608,621]},["terminal",{sourceInterval:[608,611]},"+"],["app",{sourceInterval:[612,621]},"Primitive",[]]]],Primitive_negative:["define",{sourceInterval:[641,666]},null,[],["seq",{sourceInterval:[641,654]},["terminal",{sourceInterval:[641,644]},"-"],["app",{sourceInterval:[645,654]},"Primitive",[]]]],Primitive:["define",{sourceInterval:[591,707]},null,[],["alt",{sourceInterval:[608,707]},["app",{sourceInterval:[608,621]},"Primitive_positive",[]],["app",{sourceInterval:[641,654]},"Primitive_negative",[]],["app",{sourceInterval:[674,682]},"constant",[]],["app",{sourceInterval:[690,693]},"hex",[]],["app",{sourceInterval:[701,707]},"number",[]]]],add:["define",{sourceInterval:[734,838]},null,[],["alt",{sourceInterval:[745,838]},["terminal",{sourceInterval:[745,748]},"+"],["app",{sourceInterval:[756,779]},"caseInsensitive",[["terminal",{sourceInterval:[772,778]},"plus"]]],["app",{sourceInterval:[786,808]},"caseInsensitive",[["terminal",{sourceInterval:[802,807]},"add"]]],["app",{sourceInterval:[816,838]},"caseInsensitive",[["terminal",{sourceInterval:[832,837]},"and"]]]]],subtract:["define",{sourceInterval:[848,999]},null,[],["alt",{sourceInterval:[865,999]},["terminal",{sourceInterval:[865,868]},"-"],["app",{sourceInterval:[876,900]},"caseInsensitive",[["terminal",{sourceInterval:[892,899]},"minus"]]],["app",{sourceInterval:[908,935]},"caseInsensitive",[["terminal",{sourceInterval:[924,934]},"subtract"]]],["app",{sourceInterval:[943,968]},"caseInsensitive",[["terminal",{sourceInterval:[959,967]},"remove"]]],["app",{sourceInterval:[976,999]},"caseInsensitive",[["terminal",{sourceInterval:[992,998]},"take"]]]]],multiply:["define",{sourceInterval:[1011,1262]},null,[],["alt",{sourceInterval:[1028,1262]},["terminal",{sourceInterval:[1028,1031]},"*"],["terminal",{sourceInterval:[1039,1044]},"\\*"],["terminal",{sourceInterval:[1079,1089]},"\xD7"],["app",{sourceInterval:[1102,1122]},"caseInsensitive",[["terminal",{sourceInterval:[1118,1121]},"x"]]],["app",{sourceInterval:[1130,1157]},"caseInsensitive",[["terminal",{sourceInterval:[1146,1156]},"times by"]]],["app",{sourceInterval:[1165,1189]},"caseInsensitive",[["terminal",{sourceInterval:[1181,1188]},"times"]]],["app",{sourceInterval:[1197,1227]},"caseInsensitive",[["terminal",{sourceInterval:[1213,1226]},"multiply by"]]],["app",{sourceInterval:[1235,1262]},"caseInsensitive",[["terminal",{sourceInterval:[1251,1261]},"multiply"]]]]],divide:["define",{sourceInterval:[1274,1383]},null,[],["alt",{sourceInterval:[1288,1383]},["terminal",{sourceInterval:[1288,1291]},"/"],["terminal",{sourceInterval:[1299,1309]},"\xF7"],["app",{sourceInterval:[1322,1350]},"caseInsensitive",[["terminal",{sourceInterval:[1338,1349]},"divide by"]]],["app",{sourceInterval:[1358,1383]},"caseInsensitive",[["terminal",{sourceInterval:[1374,1382]},"divide"]]]]],modulo:["define",{sourceInterval:[1389,1469]},null,[],["alt",{sourceInterval:[1403,1469]},["terminal",{sourceInterval:[1403,1406]},"%"],["app",{sourceInterval:[1414,1439]},"caseInsensitive",[["terminal",{sourceInterval:[1430,1438]},"modulo"]]],["app",{sourceInterval:[1447,1469]},"caseInsensitive",[["terminal",{sourceInterval:[1463,1468]},"mod"]]]]],exponent:["define",{sourceInterval:[1475,1638]},null,[],["alt",{sourceInterval:[1491,1638]},["terminal",{sourceInterval:[1491,1494]},"^"],["app",{sourceInterval:[1502,1536]},"caseInsensitive",[["terminal",{sourceInterval:[1518,1535]},"to the power of"]]],["app",{sourceInterval:[1544,1571]},"caseInsensitive",[["terminal",{sourceInterval:[1560,1570]},"power of"]]],["app",{sourceInterval:[1579,1606]},"caseInsensitive",[["terminal",{sourceInterval:[1595,1605]},"exponent"]]],["app",{sourceInterval:[1614,1638]},"caseInsensitive",[["terminal",{sourceInterval:[1630,1637]},"prime"]]]]],constant:["define",{sourceInterval:[1644,1711]},null,[],["alt",{sourceInterval:[1661,1711]},["app",{sourceInterval:[1661,1682]},"caseInsensitive",[["terminal",{sourceInterval:[1677,1681]},"PI"]]],["app",{sourceInterval:[1691,1711]},"caseInsensitive",[["terminal",{sourceInterval:[1707,1710]},"E"]]]]],number:["define",{sourceInterval:[1812,1845]},null,[],["plus",{sourceInterval:[1826,1845]},["seq",{sourceInterval:[1827,1843]},["opt",{sourceInterval:[1827,1837]},["app",{sourceInterval:[1827,1836]},"separator",[]]],["app",{sourceInterval:[1838,1843]},"digit",[]]]]],separator:["define",{sourceInterval:[1923,1949]},null,[],["alt",{sourceInterval:[1940,1949]},["terminal",{sourceInterval:[1940,1943]},"."],["terminal",{sourceInterval:[1946,1949]},","]]],whole:["define",{sourceInterval:[1955,1974]},null,[],["plus",{sourceInterval:[1968,1974]},["app",{sourceInterval:[1968,1973]},"digit",[]]]],hex:["define",{sourceInterval:[1980,2026]},null,[],["alt",{sourceInterval:[1991,2026]},["seq",{sourceInterval:[1991,2005]},["terminal",{sourceInterval:[1991,1995]},"0x"],["plus",{sourceInterval:[1996,2005]},["app",{sourceInterval:[1996,2004]},"hexDigit",[]]]],["seq",{sourceInterval:[2013,2026]},["plus",{sourceInterval:[2013,2022]},["app",{sourceInterval:[2013,2021]},"hexDigit",[]]],["terminal",{sourceInterval:[2023,2026]},"h"]]]]}]);as.Vector2Arithmetic=xc(["grammar",{source:`Vector2Arithmetic <: BasicArithmetic {\r + // Remove support for logical shift\r + Expression \r + := AS\r +\r + P\r + := "(" Expression ")" -- parenthesis\r + | Vector2\r + | Function\r + | Primitive\r +\r + // Remove modulo support for vector\r + MD\r + := MD multiply E -- multiplication\r + | MD divide E -- division\r + | E\r +\r + Vector2\r + = vector2? "(" Expression "," Expression ")" -- parse\r +\r + Function\r + = LengthSq\r + | DistanceSq\r + | Length\r + | Distance\r + | Normalise\r + | Dot\r + | AngleBetween\r + | Cross\r + | Lerp\r +\r + LengthSq = lengthSq "(" Vector2 ")" -- function\r + DistanceSq = distanceSq "(" Vector2 "," Vector2 ")" -- function\r + Length = length "(" Vector2 ")" -- function\r + Distance = distance "(" Vector2 "," Vector2 ")" -- function\r + Normalise = normalise "(" Vector2 ")" -- function\r + Dot = dot "(" Vector2 "," Vector2 ")" -- function\r + AngleBetween = angleBetween "(" Vector2 "," Vector2 ")" -- function\r + Cross = cross "(" Vector2 "," Vector2 ")" -- function\r + Lerp = lerp "(" Vector2 "," Vector2 "," number ")" -- function\r +\r + vector2 \r + = caseInsensitive<"Vector2">\r + | caseInsensitive<"Vec2">\r +\r + lengthSq \r + = caseInsensitive<"lengthSq">\r + | caseInsensitive<"magnitudeSq">\r +\r + distanceSq\r + = caseInsensitive<"distanceSq">\r +\r + length\r + = caseInsensitive<"length">\r + | caseInsensitive<"magnitude">\r +\r + distance\r + = caseInsensitive<"distance">\r +\r + normalise \r + = caseInsensitive<"normalise">\r + | caseInsensitive<"normalize">\r +\r + dot\r + = caseInsensitive<"dotproduct">\r + | caseInsensitive<"dot">\r +\r + angleBetween\r + = caseInsensitive<"angleBetween">\r +\r + cross\r + = caseInsensitive<"crossproduct">\r + | caseInsensitive<"cross">\r +\r + lerp\r + = caseInsensitive<"lerp">\r +}`},"Vector2Arithmetic",as.BasicArithmetic,"Expression",{Expression:["override",{sourceInterval:[81,103]},null,[],["app",{sourceInterval:[101,103]},"AS",[]]],P_parenthesis:["override",{sourceInterval:[119,153]},null,[],["seq",{sourceInterval:[119,137]},["terminal",{sourceInterval:[119,122]},"("],["app",{sourceInterval:[123,133]},"Expression",[]],["terminal",{sourceInterval:[134,137]},")"]]],P:["override",{sourceInterval:[109,201]},null,[],["alt",{sourceInterval:[119,201]},["app",{sourceInterval:[119,137]},"P_parenthesis",[]],["app",{sourceInterval:[161,168]},"Vector2",[]],["app",{sourceInterval:[176,184]},"Function",[]],["app",{sourceInterval:[192,201]},"Primitive",[]]]],MD_multiplication:["override",{sourceInterval:[257,289]},null,[],["seq",{sourceInterval:[257,270]},["app",{sourceInterval:[257,259]},"MD",[]],["app",{sourceInterval:[260,268]},"multiply",[]],["app",{sourceInterval:[269,270]},"E",[]]]],MD_division:["override",{sourceInterval:[297,321]},null,[],["seq",{sourceInterval:[297,308]},["app",{sourceInterval:[297,299]},"MD",[]],["app",{sourceInterval:[300,306]},"divide",[]],["app",{sourceInterval:[307,308]},"E",[]]]],MD:["override",{sourceInterval:[246,330]},null,[],["alt",{sourceInterval:[257,330]},["app",{sourceInterval:[257,270]},"MD_multiplication",[]],["app",{sourceInterval:[297,308]},"MD_division",[]],["app",{sourceInterval:[329,330]},"E",[]]]],Vector2_parse:["define",{sourceInterval:[351,402]},null,[],["seq",{sourceInterval:[351,393]},["opt",{sourceInterval:[351,359]},["app",{sourceInterval:[351,358]},"vector2",[]]],["terminal",{sourceInterval:[360,363]},"("],["app",{sourceInterval:[364,374]},"Expression",[]],["terminal",{sourceInterval:[375,378]},","],["app",{sourceInterval:[379,389]},"Expression",[]],["terminal",{sourceInterval:[390,393]},")"]]],Vector2:["define",{sourceInterval:[336,402]},null,[],["app",{sourceInterval:[351,402]},"Vector2_parse",[]]],Function:["define",{sourceInterval:[408,544]},null,[],["alt",{sourceInterval:[423,544]},["app",{sourceInterval:[423,431]},"LengthSq",[]],["app",{sourceInterval:[438,448]},"DistanceSq",[]],["app",{sourceInterval:[455,461]},"Length",[]],["app",{sourceInterval:[468,476]},"Distance",[]],["app",{sourceInterval:[483,492]},"Normalise",[]],["app",{sourceInterval:[499,502]},"Dot",[]],["app",{sourceInterval:[509,521]},"AngleBetween",[]],["app",{sourceInterval:[528,533]},"Cross",[]],["app",{sourceInterval:[540,544]},"Lerp",[]]]],LengthSq_function:["define",{sourceInterval:[562,598]},null,[],["seq",{sourceInterval:[562,586]},["app",{sourceInterval:[562,570]},"lengthSq",[]],["terminal",{sourceInterval:[571,574]},"("],["app",{sourceInterval:[575,582]},"Vector2",[]],["terminal",{sourceInterval:[583,586]},")"]]],LengthSq:["define",{sourceInterval:[550,598]},null,[],["app",{sourceInterval:[562,598]},"LengthSq_function",[]]],DistanceSq_function:["define",{sourceInterval:[616,666]},null,[],["seq",{sourceInterval:[616,654]},["app",{sourceInterval:[616,626]},"distanceSq",[]],["terminal",{sourceInterval:[627,630]},"("],["app",{sourceInterval:[631,638]},"Vector2",[]],["terminal",{sourceInterval:[639,642]},","],["app",{sourceInterval:[643,650]},"Vector2",[]],["terminal",{sourceInterval:[651,654]},")"]]],DistanceSq:["define",{sourceInterval:[602,666]},null,[],["app",{sourceInterval:[616,666]},"DistanceSq_function",[]]],Length_function:["define",{sourceInterval:[680,714]},null,[],["seq",{sourceInterval:[680,702]},["app",{sourceInterval:[680,686]},"length",[]],["terminal",{sourceInterval:[687,690]},"("],["app",{sourceInterval:[691,698]},"Vector2",[]],["terminal",{sourceInterval:[699,702]},")"]]],Length:["define",{sourceInterval:[670,714]},null,[],["app",{sourceInterval:[680,714]},"Length_function",[]]],Distance_function:["define",{sourceInterval:[730,778]},null,[],["seq",{sourceInterval:[730,766]},["app",{sourceInterval:[730,738]},"distance",[]],["terminal",{sourceInterval:[739,742]},"("],["app",{sourceInterval:[743,750]},"Vector2",[]],["terminal",{sourceInterval:[751,754]},","],["app",{sourceInterval:[755,762]},"Vector2",[]],["terminal",{sourceInterval:[763,766]},")"]]],Distance:["define",{sourceInterval:[718,778]},null,[],["app",{sourceInterval:[730,778]},"Distance_function",[]]],Normalise_function:["define",{sourceInterval:[794,831]},null,[],["seq",{sourceInterval:[794,819]},["app",{sourceInterval:[794,803]},"normalise",[]],["terminal",{sourceInterval:[804,807]},"("],["app",{sourceInterval:[808,815]},"Vector2",[]],["terminal",{sourceInterval:[816,819]},")"]]],Normalise:["define",{sourceInterval:[782,831]},null,[],["app",{sourceInterval:[794,831]},"Normalise_function",[]]],Dot_function:["define",{sourceInterval:[841,884]},null,[],["seq",{sourceInterval:[841,872]},["app",{sourceInterval:[841,844]},"dot",[]],["terminal",{sourceInterval:[845,848]},"("],["app",{sourceInterval:[849,856]},"Vector2",[]],["terminal",{sourceInterval:[857,860]},","],["app",{sourceInterval:[861,868]},"Vector2",[]],["terminal",{sourceInterval:[869,872]},")"]]],Dot:["define",{sourceInterval:[835,884]},null,[],["app",{sourceInterval:[841,884]},"Dot_function",[]]],AngleBetween_function:["define",{sourceInterval:[903,955]},null,[],["seq",{sourceInterval:[903,943]},["app",{sourceInterval:[903,915]},"angleBetween",[]],["terminal",{sourceInterval:[916,919]},"("],["app",{sourceInterval:[920,927]},"Vector2",[]],["terminal",{sourceInterval:[928,931]},","],["app",{sourceInterval:[932,939]},"Vector2",[]],["terminal",{sourceInterval:[940,943]},")"]]],AngleBetween:["define",{sourceInterval:[888,955]},null,[],["app",{sourceInterval:[903,955]},"AngleBetween_function",[]]],Cross_function:["define",{sourceInterval:[967,1012]},null,[],["seq",{sourceInterval:[967,1e3]},["app",{sourceInterval:[967,972]},"cross",[]],["terminal",{sourceInterval:[973,976]},"("],["app",{sourceInterval:[977,984]},"Vector2",[]],["terminal",{sourceInterval:[985,988]},","],["app",{sourceInterval:[989,996]},"Vector2",[]],["terminal",{sourceInterval:[997,1e3]},")"]]],Cross:["define",{sourceInterval:[959,1012]},null,[],["app",{sourceInterval:[967,1012]},"Cross_function",[]]],Lerp_function:["define",{sourceInterval:[1023,1078]},null,[],["seq",{sourceInterval:[1023,1066]},["app",{sourceInterval:[1023,1027]},"lerp",[]],["terminal",{sourceInterval:[1028,1031]},"("],["app",{sourceInterval:[1032,1039]},"Vector2",[]],["terminal",{sourceInterval:[1040,1043]},","],["app",{sourceInterval:[1044,1051]},"Vector2",[]],["terminal",{sourceInterval:[1052,1055]},","],["app",{sourceInterval:[1056,1062]},"number",[]],["terminal",{sourceInterval:[1063,1066]},")"]]],Lerp:["define",{sourceInterval:[1016,1078]},null,[],["app",{sourceInterval:[1023,1078]},"Lerp_function",[]]],vector2:["define",{sourceInterval:[1084,1157]},null,[],["alt",{sourceInterval:[1100,1157]},["app",{sourceInterval:[1100,1126]},"caseInsensitive",[["terminal",{sourceInterval:[1116,1125]},"Vector2"]]],["app",{sourceInterval:[1134,1157]},"caseInsensitive",[["terminal",{sourceInterval:[1150,1156]},"Vec2"]]]]],lengthSq:["define",{sourceInterval:[1163,1245]},null,[],["alt",{sourceInterval:[1180,1245]},["app",{sourceInterval:[1180,1207]},"caseInsensitive",[["terminal",{sourceInterval:[1196,1206]},"lengthSq"]]],["app",{sourceInterval:[1215,1245]},"caseInsensitive",[["terminal",{sourceInterval:[1231,1244]},"magnitudeSq"]]]]],distanceSq:["define",{sourceInterval:[1251,1298]},null,[],["app",{sourceInterval:[1269,1298]},"caseInsensitive",[["terminal",{sourceInterval:[1285,1297]},"distanceSq"]]]],length:["define",{sourceInterval:[1304,1379]},null,[],["alt",{sourceInterval:[1318,1379]},["app",{sourceInterval:[1318,1343]},"caseInsensitive",[["terminal",{sourceInterval:[1334,1342]},"length"]]],["app",{sourceInterval:[1351,1379]},"caseInsensitive",[["terminal",{sourceInterval:[1367,1378]},"magnitude"]]]]],distance:["define",{sourceInterval:[1385,1428]},null,[],["app",{sourceInterval:[1401,1428]},"caseInsensitive",[["terminal",{sourceInterval:[1417,1427]},"distance"]]]],normalise:["define",{sourceInterval:[1434,1516]},null,[],["alt",{sourceInterval:[1452,1516]},["app",{sourceInterval:[1452,1480]},"caseInsensitive",[["terminal",{sourceInterval:[1468,1479]},"normalise"]]],["app",{sourceInterval:[1488,1516]},"caseInsensitive",[["terminal",{sourceInterval:[1504,1515]},"normalize"]]]]],dot:["define",{sourceInterval:[1522,1592]},null,[],["alt",{sourceInterval:[1533,1592]},["app",{sourceInterval:[1533,1562]},"caseInsensitive",[["terminal",{sourceInterval:[1549,1561]},"dotproduct"]]],["app",{sourceInterval:[1570,1592]},"caseInsensitive",[["terminal",{sourceInterval:[1586,1591]},"dot"]]]]],angleBetween:["define",{sourceInterval:[1598,1649]},null,[],["app",{sourceInterval:[1618,1649]},"caseInsensitive",[["terminal",{sourceInterval:[1634,1648]},"angleBetween"]]]],cross:["define",{sourceInterval:[1655,1731]},null,[],["alt",{sourceInterval:[1668,1731]},["app",{sourceInterval:[1668,1699]},"caseInsensitive",[["terminal",{sourceInterval:[1684,1698]},"crossproduct"]]],["app",{sourceInterval:[1707,1731]},"caseInsensitive",[["terminal",{sourceInterval:[1723,1730]},"cross"]]]]],lerp:["define",{sourceInterval:[1737,1772]},null,[],["app",{sourceInterval:[1749,1772]},"caseInsensitive",[["terminal",{sourceInterval:[1765,1771]},"lerp"]]]]}]);bc.exports=as});var Pc=E((H4,Dc)=>{"use strict";var{makeRecipe:Rc}=Qe(),os={};os.BasicArithmetic=Rc(["grammar",{source:`BasicArithmetic {\r + Expression\r + = LogicalShift\r +\r + LogicalShift\r + = LogicalShift "<<" LogicalShift -- left\r + | LogicalShift ">>" LogicalShift -- right\r + | AS \r +\r + // Addition or Subtraction\r + AS\r + = AS add MD -- addition\r + | AS subtract MD -- subtraction\r + | MD\r +\r + // Multiply or Divide\r + MD\r + = MD multiply E -- multiplication\r + | MD divide E -- division\r + | MD modulo E -- modulo\r + | E\r +\r + // Exponent\r + E\r + = P exponent E -- exponent\r + | P\r +\r + // Parenthesis\r + P\r + = "(" Expression ")" -- parenthesis\r + | Primitive\r + \r + Primitive\r + = "+" Primitive -- positive\r + | "-" Primitive -- negative\r + | constant\r + | hex\r + | number\r + \r + // Lexical Rules\r + add \r + = "+"\r + | caseInsensitive<"plus">\r + | caseInsensitive<"add">\r + | caseInsensitive<"and">\r + \r + subtract \r + = "-"\r + | caseInsensitive<"minus">\r + | caseInsensitive<"subtract">\r + | caseInsensitive<"remove">\r + | caseInsensitive<"take">\r + \r + multiply \r + = "*"\r + | "\\\\*" // Escaped \\* for markdown\r + | "\\u{00D7}" // \xD7\r + | caseInsensitive<"x">\r + | caseInsensitive<"times by">\r + | caseInsensitive<"times">\r + | caseInsensitive<"multiply by">\r + | caseInsensitive<"multiply">\r + \r + divide\r + = "/"\r + | "\\u{00F7}" // \xF7\r + | caseInsensitive<"divide by">\r + | caseInsensitive<"divide">\r +\r + modulo\r + = "%"\r + | caseInsensitive<"modulo">\r + | caseInsensitive<"mod">\r +\r + exponent\r + = "^"\r + | caseInsensitive<"to the power of">\r + | caseInsensitive<"power of">\r + | caseInsensitive<"exponent">\r + | caseInsensitive<"prime">\r +\r + constant \r + = caseInsensitive<"PI"> \r + | caseInsensitive<"E">\r +\r + // Lazy: It will match anything like 1214.200.2442,200 the visitor decides how to interpret\r + number\r + = (separator? digit)+\r +\r + // The separator can be a comma or a period, detected in the visitor\r + separator\r + = "." | ","\r +\r + whole\r + = digit+\r +\r + hex\r + = "0x" hexDigit+\r + | hexDigit+ "h"\r +}`},"BasicArithmetic",null,"Expression",{Expression:["define",{sourceInterval:[21,51]},null,[],["app",{sourceInterval:[39,51]},"LogicalShift",[]]],LogicalShift_left:["define",{sourceInterval:[77,115]},null,[],["seq",{sourceInterval:[77,107]},["app",{sourceInterval:[77,89]},"LogicalShift",[]],["terminal",{sourceInterval:[90,94]},"<<"],["app",{sourceInterval:[95,107]},"LogicalShift",[]]]],LogicalShift_right:["define",{sourceInterval:[123,162]},null,[],["seq",{sourceInterval:[123,153]},["app",{sourceInterval:[123,135]},"LogicalShift",[]],["terminal",{sourceInterval:[136,140]},">>"],["app",{sourceInterval:[141,153]},"LogicalShift",[]]]],LogicalShift:["define",{sourceInterval:[57,172]},null,[],["alt",{sourceInterval:[77,172]},["app",{sourceInterval:[77,107]},"LogicalShift_left",[]],["app",{sourceInterval:[123,153]},"LogicalShift_right",[]],["app",{sourceInterval:[170,172]},"AS",[]]]],AS_addition:["define",{sourceInterval:[219,241]},null,[],["seq",{sourceInterval:[219,228]},["app",{sourceInterval:[219,221]},"AS",[]],["app",{sourceInterval:[222,225]},"add",[]],["app",{sourceInterval:[226,228]},"MD",[]]]],AS_subtraction:["define",{sourceInterval:[249,279]},null,[],["seq",{sourceInterval:[249,263]},["app",{sourceInterval:[249,251]},"AS",[]],["app",{sourceInterval:[252,260]},"subtract",[]],["app",{sourceInterval:[261,263]},"MD",[]]]],AS:["define",{sourceInterval:[209,289]},null,[],["alt",{sourceInterval:[219,289]},["app",{sourceInterval:[219,228]},"AS_addition",[]],["app",{sourceInterval:[249,263]},"AS_subtraction",[]],["app",{sourceInterval:[287,289]},"MD",[]]]],MD_multiplication:["define",{sourceInterval:[330,362]},null,[],["seq",{sourceInterval:[330,343]},["app",{sourceInterval:[330,332]},"MD",[]],["app",{sourceInterval:[333,341]},"multiply",[]],["app",{sourceInterval:[342,343]},"E",[]]]],MD_division:["define",{sourceInterval:[370,394]},null,[],["seq",{sourceInterval:[370,381]},["app",{sourceInterval:[370,372]},"MD",[]],["app",{sourceInterval:[373,379]},"divide",[]],["app",{sourceInterval:[380,381]},"E",[]]]],MD_modulo:["define",{sourceInterval:[402,424]},null,[],["seq",{sourceInterval:[402,413]},["app",{sourceInterval:[402,404]},"MD",[]],["app",{sourceInterval:[405,411]},"modulo",[]],["app",{sourceInterval:[412,413]},"E",[]]]],MD:["define",{sourceInterval:[320,433]},null,[],["alt",{sourceInterval:[330,433]},["app",{sourceInterval:[330,343]},"MD_multiplication",[]],["app",{sourceInterval:[370,381]},"MD_division",[]],["app",{sourceInterval:[402,413]},"MD_modulo",[]],["app",{sourceInterval:[432,433]},"E",[]]]],E_exponent:["define",{sourceInterval:[463,488]},null,[],["seq",{sourceInterval:[463,475]},["app",{sourceInterval:[463,464]},"P",[]],["app",{sourceInterval:[465,473]},"exponent",[]],["app",{sourceInterval:[474,475]},"E",[]]]],E:["define",{sourceInterval:[454,497]},null,[],["alt",{sourceInterval:[463,497]},["app",{sourceInterval:[463,475]},"E_exponent",[]],["app",{sourceInterval:[496,497]},"P",[]]]],P_parenthesis:["define",{sourceInterval:[530,564]},null,[],["seq",{sourceInterval:[530,548]},["terminal",{sourceInterval:[530,533]},"("],["app",{sourceInterval:[534,544]},"Expression",[]],["terminal",{sourceInterval:[545,548]},")"]]],P:["define",{sourceInterval:[521,581]},null,[],["alt",{sourceInterval:[530,581]},["app",{sourceInterval:[530,548]},"P_parenthesis",[]],["app",{sourceInterval:[572,581]},"Primitive",[]]]],Primitive_positive:["define",{sourceInterval:[608,633]},null,[],["seq",{sourceInterval:[608,621]},["terminal",{sourceInterval:[608,611]},"+"],["app",{sourceInterval:[612,621]},"Primitive",[]]]],Primitive_negative:["define",{sourceInterval:[641,666]},null,[],["seq",{sourceInterval:[641,654]},["terminal",{sourceInterval:[641,644]},"-"],["app",{sourceInterval:[645,654]},"Primitive",[]]]],Primitive:["define",{sourceInterval:[591,707]},null,[],["alt",{sourceInterval:[608,707]},["app",{sourceInterval:[608,621]},"Primitive_positive",[]],["app",{sourceInterval:[641,654]},"Primitive_negative",[]],["app",{sourceInterval:[674,682]},"constant",[]],["app",{sourceInterval:[690,693]},"hex",[]],["app",{sourceInterval:[701,707]},"number",[]]]],add:["define",{sourceInterval:[734,838]},null,[],["alt",{sourceInterval:[745,838]},["terminal",{sourceInterval:[745,748]},"+"],["app",{sourceInterval:[756,779]},"caseInsensitive",[["terminal",{sourceInterval:[772,778]},"plus"]]],["app",{sourceInterval:[786,808]},"caseInsensitive",[["terminal",{sourceInterval:[802,807]},"add"]]],["app",{sourceInterval:[816,838]},"caseInsensitive",[["terminal",{sourceInterval:[832,837]},"and"]]]]],subtract:["define",{sourceInterval:[848,999]},null,[],["alt",{sourceInterval:[865,999]},["terminal",{sourceInterval:[865,868]},"-"],["app",{sourceInterval:[876,900]},"caseInsensitive",[["terminal",{sourceInterval:[892,899]},"minus"]]],["app",{sourceInterval:[908,935]},"caseInsensitive",[["terminal",{sourceInterval:[924,934]},"subtract"]]],["app",{sourceInterval:[943,968]},"caseInsensitive",[["terminal",{sourceInterval:[959,967]},"remove"]]],["app",{sourceInterval:[976,999]},"caseInsensitive",[["terminal",{sourceInterval:[992,998]},"take"]]]]],multiply:["define",{sourceInterval:[1011,1262]},null,[],["alt",{sourceInterval:[1028,1262]},["terminal",{sourceInterval:[1028,1031]},"*"],["terminal",{sourceInterval:[1039,1044]},"\\*"],["terminal",{sourceInterval:[1079,1089]},"\xD7"],["app",{sourceInterval:[1102,1122]},"caseInsensitive",[["terminal",{sourceInterval:[1118,1121]},"x"]]],["app",{sourceInterval:[1130,1157]},"caseInsensitive",[["terminal",{sourceInterval:[1146,1156]},"times by"]]],["app",{sourceInterval:[1165,1189]},"caseInsensitive",[["terminal",{sourceInterval:[1181,1188]},"times"]]],["app",{sourceInterval:[1197,1227]},"caseInsensitive",[["terminal",{sourceInterval:[1213,1226]},"multiply by"]]],["app",{sourceInterval:[1235,1262]},"caseInsensitive",[["terminal",{sourceInterval:[1251,1261]},"multiply"]]]]],divide:["define",{sourceInterval:[1274,1383]},null,[],["alt",{sourceInterval:[1288,1383]},["terminal",{sourceInterval:[1288,1291]},"/"],["terminal",{sourceInterval:[1299,1309]},"\xF7"],["app",{sourceInterval:[1322,1350]},"caseInsensitive",[["terminal",{sourceInterval:[1338,1349]},"divide by"]]],["app",{sourceInterval:[1358,1383]},"caseInsensitive",[["terminal",{sourceInterval:[1374,1382]},"divide"]]]]],modulo:["define",{sourceInterval:[1389,1469]},null,[],["alt",{sourceInterval:[1403,1469]},["terminal",{sourceInterval:[1403,1406]},"%"],["app",{sourceInterval:[1414,1439]},"caseInsensitive",[["terminal",{sourceInterval:[1430,1438]},"modulo"]]],["app",{sourceInterval:[1447,1469]},"caseInsensitive",[["terminal",{sourceInterval:[1463,1468]},"mod"]]]]],exponent:["define",{sourceInterval:[1475,1638]},null,[],["alt",{sourceInterval:[1491,1638]},["terminal",{sourceInterval:[1491,1494]},"^"],["app",{sourceInterval:[1502,1536]},"caseInsensitive",[["terminal",{sourceInterval:[1518,1535]},"to the power of"]]],["app",{sourceInterval:[1544,1571]},"caseInsensitive",[["terminal",{sourceInterval:[1560,1570]},"power of"]]],["app",{sourceInterval:[1579,1606]},"caseInsensitive",[["terminal",{sourceInterval:[1595,1605]},"exponent"]]],["app",{sourceInterval:[1614,1638]},"caseInsensitive",[["terminal",{sourceInterval:[1630,1637]},"prime"]]]]],constant:["define",{sourceInterval:[1644,1711]},null,[],["alt",{sourceInterval:[1661,1711]},["app",{sourceInterval:[1661,1682]},"caseInsensitive",[["terminal",{sourceInterval:[1677,1681]},"PI"]]],["app",{sourceInterval:[1691,1711]},"caseInsensitive",[["terminal",{sourceInterval:[1707,1710]},"E"]]]]],number:["define",{sourceInterval:[1812,1845]},null,[],["plus",{sourceInterval:[1826,1845]},["seq",{sourceInterval:[1827,1843]},["opt",{sourceInterval:[1827,1837]},["app",{sourceInterval:[1827,1836]},"separator",[]]],["app",{sourceInterval:[1838,1843]},"digit",[]]]]],separator:["define",{sourceInterval:[1923,1949]},null,[],["alt",{sourceInterval:[1940,1949]},["terminal",{sourceInterval:[1940,1943]},"."],["terminal",{sourceInterval:[1946,1949]},","]]],whole:["define",{sourceInterval:[1955,1974]},null,[],["plus",{sourceInterval:[1968,1974]},["app",{sourceInterval:[1968,1973]},"digit",[]]]],hex:["define",{sourceInterval:[1980,2026]},null,[],["alt",{sourceInterval:[1991,2026]},["seq",{sourceInterval:[1991,2005]},["terminal",{sourceInterval:[1991,1995]},"0x"],["plus",{sourceInterval:[1996,2005]},["app",{sourceInterval:[1996,2004]},"hexDigit",[]]]],["seq",{sourceInterval:[2013,2026]},["plus",{sourceInterval:[2013,2022]},["app",{sourceInterval:[2013,2021]},"hexDigit",[]]],["terminal",{sourceInterval:[2023,2026]},"h"]]]]}]);os.Vector3Arithmetic=Rc(["grammar",{source:`Vector3Arithmetic <: BasicArithmetic {\r + // Remove support for logical shift\r + Expression \r + := AS\r +\r + P\r + := "(" Expression ")" -- parenthesis\r + | Vector3\r + | Function\r + | Primitive\r +\r + // Remove modulo support for vector\r + MD\r + := MD multiply E -- multiplication\r + | MD divide E -- division\r + | E\r +\r + Vector3\r + = vector3? "(" Expression "," Expression "," Expression ")" -- parse\r +\r + Function\r + = LengthSq\r + | DistanceSq\r + | Length\r + | Distance\r + | Normalise\r + | Dot\r + | AngleBetween\r + | Cross\r + | Lerp\r +\r + LengthSq = lengthSq "(" Vector3 ")" -- function\r + DistanceSq = distanceSq "(" Vector3 "," Vector3 ")" -- function\r + Length = length "(" Vector3 ")" -- function\r + Distance = distance "(" Vector3 "," Vector3 ")" -- function\r + Normalise = normalise "(" Vector3 ")" -- function\r + Dot = dot "(" Vector3 "," Vector3 ")" -- function\r + AngleBetween = angleBetween "(" Vector3 "," Vector3 ")" -- function\r + Cross = cross "(" Vector3 "," Vector3 ")" -- function\r + Lerp = lerp "(" Vector3 "," Vector3 "," number ")" -- function\r +\r + vector3 \r + = caseInsensitive<"Vector3">\r + | caseInsensitive<"Vec3">\r +\r + lengthSq \r + = caseInsensitive<"lengthSq">\r + | caseInsensitive<"magnitudeSq">\r +\r + distanceSq\r + = caseInsensitive<"distanceSq">\r +\r + length\r + = caseInsensitive<"length">\r + | caseInsensitive<"magnitude">\r +\r + distance\r + = caseInsensitive<"distance">\r +\r + normalise \r + = caseInsensitive<"normalise">\r + | caseInsensitive<"normalize">\r +\r + dot\r + = caseInsensitive<"dotproduct">\r + | caseInsensitive<"dot">\r +\r + angleBetween\r + = caseInsensitive<"angleBetween">\r +\r + cross\r + = caseInsensitive<"crossproduct">\r + | caseInsensitive<"cross">\r +\r + lerp\r + = caseInsensitive<"lerp">\r +}`},"Vector3Arithmetic",os.BasicArithmetic,"Expression",{Expression:["override",{sourceInterval:[81,103]},null,[],["app",{sourceInterval:[101,103]},"AS",[]]],P_parenthesis:["override",{sourceInterval:[119,153]},null,[],["seq",{sourceInterval:[119,137]},["terminal",{sourceInterval:[119,122]},"("],["app",{sourceInterval:[123,133]},"Expression",[]],["terminal",{sourceInterval:[134,137]},")"]]],P:["override",{sourceInterval:[109,201]},null,[],["alt",{sourceInterval:[119,201]},["app",{sourceInterval:[119,137]},"P_parenthesis",[]],["app",{sourceInterval:[161,168]},"Vector3",[]],["app",{sourceInterval:[176,184]},"Function",[]],["app",{sourceInterval:[192,201]},"Primitive",[]]]],MD_multiplication:["override",{sourceInterval:[257,289]},null,[],["seq",{sourceInterval:[257,270]},["app",{sourceInterval:[257,259]},"MD",[]],["app",{sourceInterval:[260,268]},"multiply",[]],["app",{sourceInterval:[269,270]},"E",[]]]],MD_division:["override",{sourceInterval:[297,321]},null,[],["seq",{sourceInterval:[297,308]},["app",{sourceInterval:[297,299]},"MD",[]],["app",{sourceInterval:[300,306]},"divide",[]],["app",{sourceInterval:[307,308]},"E",[]]]],MD:["override",{sourceInterval:[246,330]},null,[],["alt",{sourceInterval:[257,330]},["app",{sourceInterval:[257,270]},"MD_multiplication",[]],["app",{sourceInterval:[297,308]},"MD_division",[]],["app",{sourceInterval:[329,330]},"E",[]]]],Vector3_parse:["define",{sourceInterval:[351,417]},null,[],["seq",{sourceInterval:[351,408]},["opt",{sourceInterval:[351,359]},["app",{sourceInterval:[351,358]},"vector3",[]]],["terminal",{sourceInterval:[360,363]},"("],["app",{sourceInterval:[364,374]},"Expression",[]],["terminal",{sourceInterval:[375,378]},","],["app",{sourceInterval:[379,389]},"Expression",[]],["terminal",{sourceInterval:[390,393]},","],["app",{sourceInterval:[394,404]},"Expression",[]],["terminal",{sourceInterval:[405,408]},")"]]],Vector3:["define",{sourceInterval:[336,417]},null,[],["app",{sourceInterval:[351,417]},"Vector3_parse",[]]],Function:["define",{sourceInterval:[423,559]},null,[],["alt",{sourceInterval:[438,559]},["app",{sourceInterval:[438,446]},"LengthSq",[]],["app",{sourceInterval:[453,463]},"DistanceSq",[]],["app",{sourceInterval:[470,476]},"Length",[]],["app",{sourceInterval:[483,491]},"Distance",[]],["app",{sourceInterval:[498,507]},"Normalise",[]],["app",{sourceInterval:[514,517]},"Dot",[]],["app",{sourceInterval:[524,536]},"AngleBetween",[]],["app",{sourceInterval:[543,548]},"Cross",[]],["app",{sourceInterval:[555,559]},"Lerp",[]]]],LengthSq_function:["define",{sourceInterval:[577,613]},null,[],["seq",{sourceInterval:[577,601]},["app",{sourceInterval:[577,585]},"lengthSq",[]],["terminal",{sourceInterval:[586,589]},"("],["app",{sourceInterval:[590,597]},"Vector3",[]],["terminal",{sourceInterval:[598,601]},")"]]],LengthSq:["define",{sourceInterval:[565,613]},null,[],["app",{sourceInterval:[577,613]},"LengthSq_function",[]]],DistanceSq_function:["define",{sourceInterval:[631,681]},null,[],["seq",{sourceInterval:[631,669]},["app",{sourceInterval:[631,641]},"distanceSq",[]],["terminal",{sourceInterval:[642,645]},"("],["app",{sourceInterval:[646,653]},"Vector3",[]],["terminal",{sourceInterval:[654,657]},","],["app",{sourceInterval:[658,665]},"Vector3",[]],["terminal",{sourceInterval:[666,669]},")"]]],DistanceSq:["define",{sourceInterval:[617,681]},null,[],["app",{sourceInterval:[631,681]},"DistanceSq_function",[]]],Length_function:["define",{sourceInterval:[695,729]},null,[],["seq",{sourceInterval:[695,717]},["app",{sourceInterval:[695,701]},"length",[]],["terminal",{sourceInterval:[702,705]},"("],["app",{sourceInterval:[706,713]},"Vector3",[]],["terminal",{sourceInterval:[714,717]},")"]]],Length:["define",{sourceInterval:[685,729]},null,[],["app",{sourceInterval:[695,729]},"Length_function",[]]],Distance_function:["define",{sourceInterval:[745,793]},null,[],["seq",{sourceInterval:[745,781]},["app",{sourceInterval:[745,753]},"distance",[]],["terminal",{sourceInterval:[754,757]},"("],["app",{sourceInterval:[758,765]},"Vector3",[]],["terminal",{sourceInterval:[766,769]},","],["app",{sourceInterval:[770,777]},"Vector3",[]],["terminal",{sourceInterval:[778,781]},")"]]],Distance:["define",{sourceInterval:[733,793]},null,[],["app",{sourceInterval:[745,793]},"Distance_function",[]]],Normalise_function:["define",{sourceInterval:[809,846]},null,[],["seq",{sourceInterval:[809,834]},["app",{sourceInterval:[809,818]},"normalise",[]],["terminal",{sourceInterval:[819,822]},"("],["app",{sourceInterval:[823,830]},"Vector3",[]],["terminal",{sourceInterval:[831,834]},")"]]],Normalise:["define",{sourceInterval:[797,846]},null,[],["app",{sourceInterval:[809,846]},"Normalise_function",[]]],Dot_function:["define",{sourceInterval:[856,899]},null,[],["seq",{sourceInterval:[856,887]},["app",{sourceInterval:[856,859]},"dot",[]],["terminal",{sourceInterval:[860,863]},"("],["app",{sourceInterval:[864,871]},"Vector3",[]],["terminal",{sourceInterval:[872,875]},","],["app",{sourceInterval:[876,883]},"Vector3",[]],["terminal",{sourceInterval:[884,887]},")"]]],Dot:["define",{sourceInterval:[850,899]},null,[],["app",{sourceInterval:[856,899]},"Dot_function",[]]],AngleBetween_function:["define",{sourceInterval:[918,970]},null,[],["seq",{sourceInterval:[918,958]},["app",{sourceInterval:[918,930]},"angleBetween",[]],["terminal",{sourceInterval:[931,934]},"("],["app",{sourceInterval:[935,942]},"Vector3",[]],["terminal",{sourceInterval:[943,946]},","],["app",{sourceInterval:[947,954]},"Vector3",[]],["terminal",{sourceInterval:[955,958]},")"]]],AngleBetween:["define",{sourceInterval:[903,970]},null,[],["app",{sourceInterval:[918,970]},"AngleBetween_function",[]]],Cross_function:["define",{sourceInterval:[982,1027]},null,[],["seq",{sourceInterval:[982,1015]},["app",{sourceInterval:[982,987]},"cross",[]],["terminal",{sourceInterval:[988,991]},"("],["app",{sourceInterval:[992,999]},"Vector3",[]],["terminal",{sourceInterval:[1e3,1003]},","],["app",{sourceInterval:[1004,1011]},"Vector3",[]],["terminal",{sourceInterval:[1012,1015]},")"]]],Cross:["define",{sourceInterval:[974,1027]},null,[],["app",{sourceInterval:[982,1027]},"Cross_function",[]]],Lerp_function:["define",{sourceInterval:[1038,1093]},null,[],["seq",{sourceInterval:[1038,1081]},["app",{sourceInterval:[1038,1042]},"lerp",[]],["terminal",{sourceInterval:[1043,1046]},"("],["app",{sourceInterval:[1047,1054]},"Vector3",[]],["terminal",{sourceInterval:[1055,1058]},","],["app",{sourceInterval:[1059,1066]},"Vector3",[]],["terminal",{sourceInterval:[1067,1070]},","],["app",{sourceInterval:[1071,1077]},"number",[]],["terminal",{sourceInterval:[1078,1081]},")"]]],Lerp:["define",{sourceInterval:[1031,1093]},null,[],["app",{sourceInterval:[1038,1093]},"Lerp_function",[]]],vector3:["define",{sourceInterval:[1099,1172]},null,[],["alt",{sourceInterval:[1115,1172]},["app",{sourceInterval:[1115,1141]},"caseInsensitive",[["terminal",{sourceInterval:[1131,1140]},"Vector3"]]],["app",{sourceInterval:[1149,1172]},"caseInsensitive",[["terminal",{sourceInterval:[1165,1171]},"Vec3"]]]]],lengthSq:["define",{sourceInterval:[1178,1260]},null,[],["alt",{sourceInterval:[1195,1260]},["app",{sourceInterval:[1195,1222]},"caseInsensitive",[["terminal",{sourceInterval:[1211,1221]},"lengthSq"]]],["app",{sourceInterval:[1230,1260]},"caseInsensitive",[["terminal",{sourceInterval:[1246,1259]},"magnitudeSq"]]]]],distanceSq:["define",{sourceInterval:[1266,1313]},null,[],["app",{sourceInterval:[1284,1313]},"caseInsensitive",[["terminal",{sourceInterval:[1300,1312]},"distanceSq"]]]],length:["define",{sourceInterval:[1319,1394]},null,[],["alt",{sourceInterval:[1333,1394]},["app",{sourceInterval:[1333,1358]},"caseInsensitive",[["terminal",{sourceInterval:[1349,1357]},"length"]]],["app",{sourceInterval:[1366,1394]},"caseInsensitive",[["terminal",{sourceInterval:[1382,1393]},"magnitude"]]]]],distance:["define",{sourceInterval:[1400,1443]},null,[],["app",{sourceInterval:[1416,1443]},"caseInsensitive",[["terminal",{sourceInterval:[1432,1442]},"distance"]]]],normalise:["define",{sourceInterval:[1449,1531]},null,[],["alt",{sourceInterval:[1467,1531]},["app",{sourceInterval:[1467,1495]},"caseInsensitive",[["terminal",{sourceInterval:[1483,1494]},"normalise"]]],["app",{sourceInterval:[1503,1531]},"caseInsensitive",[["terminal",{sourceInterval:[1519,1530]},"normalize"]]]]],dot:["define",{sourceInterval:[1537,1607]},null,[],["alt",{sourceInterval:[1548,1607]},["app",{sourceInterval:[1548,1577]},"caseInsensitive",[["terminal",{sourceInterval:[1564,1576]},"dotproduct"]]],["app",{sourceInterval:[1585,1607]},"caseInsensitive",[["terminal",{sourceInterval:[1601,1606]},"dot"]]]]],angleBetween:["define",{sourceInterval:[1613,1664]},null,[],["app",{sourceInterval:[1633,1664]},"caseInsensitive",[["terminal",{sourceInterval:[1649,1663]},"angleBetween"]]]],cross:["define",{sourceInterval:[1670,1746]},null,[],["alt",{sourceInterval:[1683,1746]},["app",{sourceInterval:[1683,1714]},"caseInsensitive",[["terminal",{sourceInterval:[1699,1713]},"crossproduct"]]],["app",{sourceInterval:[1722,1746]},"caseInsensitive",[["terminal",{sourceInterval:[1738,1745]},"cross"]]]]],lerp:["define",{sourceInterval:[1752,1787]},null,[],["app",{sourceInterval:[1764,1787]},"caseInsensitive",[["terminal",{sourceInterval:[1780,1786]},"lerp"]]]]}]);Dc.exports=os});var Ac=E((W4,Ec)=>{"use strict";var{makeRecipe:Mc}=Qe(),ls={};ls.BasicArithmetic=Mc(["grammar",{source:`BasicArithmetic {\r + Expression\r + = LogicalShift\r +\r + LogicalShift\r + = LogicalShift "<<" LogicalShift -- left\r + | LogicalShift ">>" LogicalShift -- right\r + | AS \r +\r + // Addition or Subtraction\r + AS\r + = AS add MD -- addition\r + | AS subtract MD -- subtraction\r + | MD\r +\r + // Multiply or Divide\r + MD\r + = MD multiply E -- multiplication\r + | MD divide E -- division\r + | MD modulo E -- modulo\r + | E\r +\r + // Exponent\r + E\r + = P exponent E -- exponent\r + | P\r +\r + // Parenthesis\r + P\r + = "(" Expression ")" -- parenthesis\r + | Primitive\r + \r + Primitive\r + = "+" Primitive -- positive\r + | "-" Primitive -- negative\r + | constant\r + | hex\r + | number\r + \r + // Lexical Rules\r + add \r + = "+"\r + | caseInsensitive<"plus">\r + | caseInsensitive<"add">\r + | caseInsensitive<"and">\r + \r + subtract \r + = "-"\r + | caseInsensitive<"minus">\r + | caseInsensitive<"subtract">\r + | caseInsensitive<"remove">\r + | caseInsensitive<"take">\r + \r + multiply \r + = "*"\r + | "\\\\*" // Escaped \\* for markdown\r + | "\\u{00D7}" // \xD7\r + | caseInsensitive<"x">\r + | caseInsensitive<"times by">\r + | caseInsensitive<"times">\r + | caseInsensitive<"multiply by">\r + | caseInsensitive<"multiply">\r + \r + divide\r + = "/"\r + | "\\u{00F7}" // \xF7\r + | caseInsensitive<"divide by">\r + | caseInsensitive<"divide">\r +\r + modulo\r + = "%"\r + | caseInsensitive<"modulo">\r + | caseInsensitive<"mod">\r +\r + exponent\r + = "^"\r + | caseInsensitive<"to the power of">\r + | caseInsensitive<"power of">\r + | caseInsensitive<"exponent">\r + | caseInsensitive<"prime">\r +\r + constant \r + = caseInsensitive<"PI"> \r + | caseInsensitive<"E">\r +\r + // Lazy: It will match anything like 1214.200.2442,200 the visitor decides how to interpret\r + number\r + = (separator? digit)+\r +\r + // The separator can be a comma or a period, detected in the visitor\r + separator\r + = "." | ","\r +\r + whole\r + = digit+\r +\r + hex\r + = "0x" hexDigit+\r + | hexDigit+ "h"\r +}`},"BasicArithmetic",null,"Expression",{Expression:["define",{sourceInterval:[21,51]},null,[],["app",{sourceInterval:[39,51]},"LogicalShift",[]]],LogicalShift_left:["define",{sourceInterval:[77,115]},null,[],["seq",{sourceInterval:[77,107]},["app",{sourceInterval:[77,89]},"LogicalShift",[]],["terminal",{sourceInterval:[90,94]},"<<"],["app",{sourceInterval:[95,107]},"LogicalShift",[]]]],LogicalShift_right:["define",{sourceInterval:[123,162]},null,[],["seq",{sourceInterval:[123,153]},["app",{sourceInterval:[123,135]},"LogicalShift",[]],["terminal",{sourceInterval:[136,140]},">>"],["app",{sourceInterval:[141,153]},"LogicalShift",[]]]],LogicalShift:["define",{sourceInterval:[57,172]},null,[],["alt",{sourceInterval:[77,172]},["app",{sourceInterval:[77,107]},"LogicalShift_left",[]],["app",{sourceInterval:[123,153]},"LogicalShift_right",[]],["app",{sourceInterval:[170,172]},"AS",[]]]],AS_addition:["define",{sourceInterval:[219,241]},null,[],["seq",{sourceInterval:[219,228]},["app",{sourceInterval:[219,221]},"AS",[]],["app",{sourceInterval:[222,225]},"add",[]],["app",{sourceInterval:[226,228]},"MD",[]]]],AS_subtraction:["define",{sourceInterval:[249,279]},null,[],["seq",{sourceInterval:[249,263]},["app",{sourceInterval:[249,251]},"AS",[]],["app",{sourceInterval:[252,260]},"subtract",[]],["app",{sourceInterval:[261,263]},"MD",[]]]],AS:["define",{sourceInterval:[209,289]},null,[],["alt",{sourceInterval:[219,289]},["app",{sourceInterval:[219,228]},"AS_addition",[]],["app",{sourceInterval:[249,263]},"AS_subtraction",[]],["app",{sourceInterval:[287,289]},"MD",[]]]],MD_multiplication:["define",{sourceInterval:[330,362]},null,[],["seq",{sourceInterval:[330,343]},["app",{sourceInterval:[330,332]},"MD",[]],["app",{sourceInterval:[333,341]},"multiply",[]],["app",{sourceInterval:[342,343]},"E",[]]]],MD_division:["define",{sourceInterval:[370,394]},null,[],["seq",{sourceInterval:[370,381]},["app",{sourceInterval:[370,372]},"MD",[]],["app",{sourceInterval:[373,379]},"divide",[]],["app",{sourceInterval:[380,381]},"E",[]]]],MD_modulo:["define",{sourceInterval:[402,424]},null,[],["seq",{sourceInterval:[402,413]},["app",{sourceInterval:[402,404]},"MD",[]],["app",{sourceInterval:[405,411]},"modulo",[]],["app",{sourceInterval:[412,413]},"E",[]]]],MD:["define",{sourceInterval:[320,433]},null,[],["alt",{sourceInterval:[330,433]},["app",{sourceInterval:[330,343]},"MD_multiplication",[]],["app",{sourceInterval:[370,381]},"MD_division",[]],["app",{sourceInterval:[402,413]},"MD_modulo",[]],["app",{sourceInterval:[432,433]},"E",[]]]],E_exponent:["define",{sourceInterval:[463,488]},null,[],["seq",{sourceInterval:[463,475]},["app",{sourceInterval:[463,464]},"P",[]],["app",{sourceInterval:[465,473]},"exponent",[]],["app",{sourceInterval:[474,475]},"E",[]]]],E:["define",{sourceInterval:[454,497]},null,[],["alt",{sourceInterval:[463,497]},["app",{sourceInterval:[463,475]},"E_exponent",[]],["app",{sourceInterval:[496,497]},"P",[]]]],P_parenthesis:["define",{sourceInterval:[530,564]},null,[],["seq",{sourceInterval:[530,548]},["terminal",{sourceInterval:[530,533]},"("],["app",{sourceInterval:[534,544]},"Expression",[]],["terminal",{sourceInterval:[545,548]},")"]]],P:["define",{sourceInterval:[521,581]},null,[],["alt",{sourceInterval:[530,581]},["app",{sourceInterval:[530,548]},"P_parenthesis",[]],["app",{sourceInterval:[572,581]},"Primitive",[]]]],Primitive_positive:["define",{sourceInterval:[608,633]},null,[],["seq",{sourceInterval:[608,621]},["terminal",{sourceInterval:[608,611]},"+"],["app",{sourceInterval:[612,621]},"Primitive",[]]]],Primitive_negative:["define",{sourceInterval:[641,666]},null,[],["seq",{sourceInterval:[641,654]},["terminal",{sourceInterval:[641,644]},"-"],["app",{sourceInterval:[645,654]},"Primitive",[]]]],Primitive:["define",{sourceInterval:[591,707]},null,[],["alt",{sourceInterval:[608,707]},["app",{sourceInterval:[608,621]},"Primitive_positive",[]],["app",{sourceInterval:[641,654]},"Primitive_negative",[]],["app",{sourceInterval:[674,682]},"constant",[]],["app",{sourceInterval:[690,693]},"hex",[]],["app",{sourceInterval:[701,707]},"number",[]]]],add:["define",{sourceInterval:[734,838]},null,[],["alt",{sourceInterval:[745,838]},["terminal",{sourceInterval:[745,748]},"+"],["app",{sourceInterval:[756,779]},"caseInsensitive",[["terminal",{sourceInterval:[772,778]},"plus"]]],["app",{sourceInterval:[786,808]},"caseInsensitive",[["terminal",{sourceInterval:[802,807]},"add"]]],["app",{sourceInterval:[816,838]},"caseInsensitive",[["terminal",{sourceInterval:[832,837]},"and"]]]]],subtract:["define",{sourceInterval:[848,999]},null,[],["alt",{sourceInterval:[865,999]},["terminal",{sourceInterval:[865,868]},"-"],["app",{sourceInterval:[876,900]},"caseInsensitive",[["terminal",{sourceInterval:[892,899]},"minus"]]],["app",{sourceInterval:[908,935]},"caseInsensitive",[["terminal",{sourceInterval:[924,934]},"subtract"]]],["app",{sourceInterval:[943,968]},"caseInsensitive",[["terminal",{sourceInterval:[959,967]},"remove"]]],["app",{sourceInterval:[976,999]},"caseInsensitive",[["terminal",{sourceInterval:[992,998]},"take"]]]]],multiply:["define",{sourceInterval:[1011,1262]},null,[],["alt",{sourceInterval:[1028,1262]},["terminal",{sourceInterval:[1028,1031]},"*"],["terminal",{sourceInterval:[1039,1044]},"\\*"],["terminal",{sourceInterval:[1079,1089]},"\xD7"],["app",{sourceInterval:[1102,1122]},"caseInsensitive",[["terminal",{sourceInterval:[1118,1121]},"x"]]],["app",{sourceInterval:[1130,1157]},"caseInsensitive",[["terminal",{sourceInterval:[1146,1156]},"times by"]]],["app",{sourceInterval:[1165,1189]},"caseInsensitive",[["terminal",{sourceInterval:[1181,1188]},"times"]]],["app",{sourceInterval:[1197,1227]},"caseInsensitive",[["terminal",{sourceInterval:[1213,1226]},"multiply by"]]],["app",{sourceInterval:[1235,1262]},"caseInsensitive",[["terminal",{sourceInterval:[1251,1261]},"multiply"]]]]],divide:["define",{sourceInterval:[1274,1383]},null,[],["alt",{sourceInterval:[1288,1383]},["terminal",{sourceInterval:[1288,1291]},"/"],["terminal",{sourceInterval:[1299,1309]},"\xF7"],["app",{sourceInterval:[1322,1350]},"caseInsensitive",[["terminal",{sourceInterval:[1338,1349]},"divide by"]]],["app",{sourceInterval:[1358,1383]},"caseInsensitive",[["terminal",{sourceInterval:[1374,1382]},"divide"]]]]],modulo:["define",{sourceInterval:[1389,1469]},null,[],["alt",{sourceInterval:[1403,1469]},["terminal",{sourceInterval:[1403,1406]},"%"],["app",{sourceInterval:[1414,1439]},"caseInsensitive",[["terminal",{sourceInterval:[1430,1438]},"modulo"]]],["app",{sourceInterval:[1447,1469]},"caseInsensitive",[["terminal",{sourceInterval:[1463,1468]},"mod"]]]]],exponent:["define",{sourceInterval:[1475,1638]},null,[],["alt",{sourceInterval:[1491,1638]},["terminal",{sourceInterval:[1491,1494]},"^"],["app",{sourceInterval:[1502,1536]},"caseInsensitive",[["terminal",{sourceInterval:[1518,1535]},"to the power of"]]],["app",{sourceInterval:[1544,1571]},"caseInsensitive",[["terminal",{sourceInterval:[1560,1570]},"power of"]]],["app",{sourceInterval:[1579,1606]},"caseInsensitive",[["terminal",{sourceInterval:[1595,1605]},"exponent"]]],["app",{sourceInterval:[1614,1638]},"caseInsensitive",[["terminal",{sourceInterval:[1630,1637]},"prime"]]]]],constant:["define",{sourceInterval:[1644,1711]},null,[],["alt",{sourceInterval:[1661,1711]},["app",{sourceInterval:[1661,1682]},"caseInsensitive",[["terminal",{sourceInterval:[1677,1681]},"PI"]]],["app",{sourceInterval:[1691,1711]},"caseInsensitive",[["terminal",{sourceInterval:[1707,1710]},"E"]]]]],number:["define",{sourceInterval:[1812,1845]},null,[],["plus",{sourceInterval:[1826,1845]},["seq",{sourceInterval:[1827,1843]},["opt",{sourceInterval:[1827,1837]},["app",{sourceInterval:[1827,1836]},"separator",[]]],["app",{sourceInterval:[1838,1843]},"digit",[]]]]],separator:["define",{sourceInterval:[1923,1949]},null,[],["alt",{sourceInterval:[1940,1949]},["terminal",{sourceInterval:[1940,1943]},"."],["terminal",{sourceInterval:[1946,1949]},","]]],whole:["define",{sourceInterval:[1955,1974]},null,[],["plus",{sourceInterval:[1968,1974]},["app",{sourceInterval:[1968,1973]},"digit",[]]]],hex:["define",{sourceInterval:[1980,2026]},null,[],["alt",{sourceInterval:[1991,2026]},["seq",{sourceInterval:[1991,2005]},["terminal",{sourceInterval:[1991,1995]},"0x"],["plus",{sourceInterval:[1996,2005]},["app",{sourceInterval:[1996,2004]},"hexDigit",[]]]],["seq",{sourceInterval:[2013,2026]},["plus",{sourceInterval:[2013,2022]},["app",{sourceInterval:[2013,2021]},"hexDigit",[]]],["terminal",{sourceInterval:[2023,2026]},"h"]]]]}]);ls.Vector4Arithmetic=Mc(["grammar",{source:`Vector4Arithmetic <: BasicArithmetic {\r + // Remove support for logical shift\r + Expression \r + := AS\r +\r + P\r + := "(" Expression ")" -- parenthesis\r + | Vector4\r + | Function\r + | Primitive\r +\r + // Remove modulo support for vector\r + MD\r + := MD multiply E -- multiplication\r + | MD divide E -- division\r + | E\r +\r + Vector4\r + = vector4? "(" Expression "," Expression "," Expression "," Expression ")" -- parse\r +\r + Function\r + = LengthSq\r + | DistanceSq\r + | Length\r + | Distance\r + | Normalise\r + | Dot\r + | AngleBetween\r + | Lerp\r +\r + LengthSq = lengthSq "(" Vector4 ")" -- function\r + DistanceSq = distanceSq "(" Vector4 "," Vector4 ")" -- function\r + Length = length "(" Vector4 ")" -- function\r + Distance = distance "(" Vector4 "," Vector4 ")" -- function\r + Normalise = normalise "(" Vector4 ")" -- function\r + Dot = dot "(" Vector4 "," Vector4 ")" -- function\r + AngleBetween = angleBetween "(" Vector4 "," Vector4 ")" -- function\r + Lerp = lerp "(" Vector4 "," Vector4 "," number ")" -- function\r +\r + vector4 \r + = caseInsensitive<"Vector4">\r + | caseInsensitive<"Vec4">\r +\r + lengthSq \r + = caseInsensitive<"lengthSq">\r + | caseInsensitive<"magnitudeSq">\r +\r + distanceSq\r + = caseInsensitive<"distanceSq">\r +\r + length\r + = caseInsensitive<"length">\r + | caseInsensitive<"magnitude">\r +\r + distance\r + = caseInsensitive<"distance">\r +\r + normalise \r + = caseInsensitive<"normalise">\r + | caseInsensitive<"normalize">\r +\r + dot\r + = caseInsensitive<"dotproduct">\r + | caseInsensitive<"dot">\r +\r + angleBetween\r + = caseInsensitive<"angleBetween">\r +\r + lerp\r + = caseInsensitive<"lerp">\r +}`},"Vector4Arithmetic",ls.BasicArithmetic,"Expression",{Expression:["override",{sourceInterval:[81,103]},null,[],["app",{sourceInterval:[101,103]},"AS",[]]],P_parenthesis:["override",{sourceInterval:[119,153]},null,[],["seq",{sourceInterval:[119,137]},["terminal",{sourceInterval:[119,122]},"("],["app",{sourceInterval:[123,133]},"Expression",[]],["terminal",{sourceInterval:[134,137]},")"]]],P:["override",{sourceInterval:[109,201]},null,[],["alt",{sourceInterval:[119,201]},["app",{sourceInterval:[119,137]},"P_parenthesis",[]],["app",{sourceInterval:[161,168]},"Vector4",[]],["app",{sourceInterval:[176,184]},"Function",[]],["app",{sourceInterval:[192,201]},"Primitive",[]]]],MD_multiplication:["override",{sourceInterval:[257,289]},null,[],["seq",{sourceInterval:[257,270]},["app",{sourceInterval:[257,259]},"MD",[]],["app",{sourceInterval:[260,268]},"multiply",[]],["app",{sourceInterval:[269,270]},"E",[]]]],MD_division:["override",{sourceInterval:[297,321]},null,[],["seq",{sourceInterval:[297,308]},["app",{sourceInterval:[297,299]},"MD",[]],["app",{sourceInterval:[300,306]},"divide",[]],["app",{sourceInterval:[307,308]},"E",[]]]],MD:["override",{sourceInterval:[246,330]},null,[],["alt",{sourceInterval:[257,330]},["app",{sourceInterval:[257,270]},"MD_multiplication",[]],["app",{sourceInterval:[297,308]},"MD_division",[]],["app",{sourceInterval:[329,330]},"E",[]]]],Vector4_parse:["define",{sourceInterval:[351,432]},null,[],["seq",{sourceInterval:[351,423]},["opt",{sourceInterval:[351,359]},["app",{sourceInterval:[351,358]},"vector4",[]]],["terminal",{sourceInterval:[360,363]},"("],["app",{sourceInterval:[364,374]},"Expression",[]],["terminal",{sourceInterval:[375,378]},","],["app",{sourceInterval:[379,389]},"Expression",[]],["terminal",{sourceInterval:[390,393]},","],["app",{sourceInterval:[394,404]},"Expression",[]],["terminal",{sourceInterval:[405,408]},","],["app",{sourceInterval:[409,419]},"Expression",[]],["terminal",{sourceInterval:[420,423]},")"]]],Vector4:["define",{sourceInterval:[336,432]},null,[],["app",{sourceInterval:[351,432]},"Vector4_parse",[]]],Function:["define",{sourceInterval:[438,562]},null,[],["alt",{sourceInterval:[453,562]},["app",{sourceInterval:[453,461]},"LengthSq",[]],["app",{sourceInterval:[468,478]},"DistanceSq",[]],["app",{sourceInterval:[485,491]},"Length",[]],["app",{sourceInterval:[498,506]},"Distance",[]],["app",{sourceInterval:[513,522]},"Normalise",[]],["app",{sourceInterval:[529,532]},"Dot",[]],["app",{sourceInterval:[539,551]},"AngleBetween",[]],["app",{sourceInterval:[558,562]},"Lerp",[]]]],LengthSq_function:["define",{sourceInterval:[580,616]},null,[],["seq",{sourceInterval:[580,604]},["app",{sourceInterval:[580,588]},"lengthSq",[]],["terminal",{sourceInterval:[589,592]},"("],["app",{sourceInterval:[593,600]},"Vector4",[]],["terminal",{sourceInterval:[601,604]},")"]]],LengthSq:["define",{sourceInterval:[568,616]},null,[],["app",{sourceInterval:[580,616]},"LengthSq_function",[]]],DistanceSq_function:["define",{sourceInterval:[634,684]},null,[],["seq",{sourceInterval:[634,672]},["app",{sourceInterval:[634,644]},"distanceSq",[]],["terminal",{sourceInterval:[645,648]},"("],["app",{sourceInterval:[649,656]},"Vector4",[]],["terminal",{sourceInterval:[657,660]},","],["app",{sourceInterval:[661,668]},"Vector4",[]],["terminal",{sourceInterval:[669,672]},")"]]],DistanceSq:["define",{sourceInterval:[620,684]},null,[],["app",{sourceInterval:[634,684]},"DistanceSq_function",[]]],Length_function:["define",{sourceInterval:[698,732]},null,[],["seq",{sourceInterval:[698,720]},["app",{sourceInterval:[698,704]},"length",[]],["terminal",{sourceInterval:[705,708]},"("],["app",{sourceInterval:[709,716]},"Vector4",[]],["terminal",{sourceInterval:[717,720]},")"]]],Length:["define",{sourceInterval:[688,732]},null,[],["app",{sourceInterval:[698,732]},"Length_function",[]]],Distance_function:["define",{sourceInterval:[748,796]},null,[],["seq",{sourceInterval:[748,784]},["app",{sourceInterval:[748,756]},"distance",[]],["terminal",{sourceInterval:[757,760]},"("],["app",{sourceInterval:[761,768]},"Vector4",[]],["terminal",{sourceInterval:[769,772]},","],["app",{sourceInterval:[773,780]},"Vector4",[]],["terminal",{sourceInterval:[781,784]},")"]]],Distance:["define",{sourceInterval:[736,796]},null,[],["app",{sourceInterval:[748,796]},"Distance_function",[]]],Normalise_function:["define",{sourceInterval:[812,849]},null,[],["seq",{sourceInterval:[812,837]},["app",{sourceInterval:[812,821]},"normalise",[]],["terminal",{sourceInterval:[822,825]},"("],["app",{sourceInterval:[826,833]},"Vector4",[]],["terminal",{sourceInterval:[834,837]},")"]]],Normalise:["define",{sourceInterval:[800,849]},null,[],["app",{sourceInterval:[812,849]},"Normalise_function",[]]],Dot_function:["define",{sourceInterval:[859,902]},null,[],["seq",{sourceInterval:[859,890]},["app",{sourceInterval:[859,862]},"dot",[]],["terminal",{sourceInterval:[863,866]},"("],["app",{sourceInterval:[867,874]},"Vector4",[]],["terminal",{sourceInterval:[875,878]},","],["app",{sourceInterval:[879,886]},"Vector4",[]],["terminal",{sourceInterval:[887,890]},")"]]],Dot:["define",{sourceInterval:[853,902]},null,[],["app",{sourceInterval:[859,902]},"Dot_function",[]]],AngleBetween_function:["define",{sourceInterval:[921,973]},null,[],["seq",{sourceInterval:[921,961]},["app",{sourceInterval:[921,933]},"angleBetween",[]],["terminal",{sourceInterval:[934,937]},"("],["app",{sourceInterval:[938,945]},"Vector4",[]],["terminal",{sourceInterval:[946,949]},","],["app",{sourceInterval:[950,957]},"Vector4",[]],["terminal",{sourceInterval:[958,961]},")"]]],AngleBetween:["define",{sourceInterval:[906,973]},null,[],["app",{sourceInterval:[921,973]},"AngleBetween_function",[]]],Lerp_function:["define",{sourceInterval:[984,1039]},null,[],["seq",{sourceInterval:[984,1027]},["app",{sourceInterval:[984,988]},"lerp",[]],["terminal",{sourceInterval:[989,992]},"("],["app",{sourceInterval:[993,1e3]},"Vector4",[]],["terminal",{sourceInterval:[1001,1004]},","],["app",{sourceInterval:[1005,1012]},"Vector4",[]],["terminal",{sourceInterval:[1013,1016]},","],["app",{sourceInterval:[1017,1023]},"number",[]],["terminal",{sourceInterval:[1024,1027]},")"]]],Lerp:["define",{sourceInterval:[977,1039]},null,[],["app",{sourceInterval:[984,1039]},"Lerp_function",[]]],vector4:["define",{sourceInterval:[1045,1118]},null,[],["alt",{sourceInterval:[1061,1118]},["app",{sourceInterval:[1061,1087]},"caseInsensitive",[["terminal",{sourceInterval:[1077,1086]},"Vector4"]]],["app",{sourceInterval:[1095,1118]},"caseInsensitive",[["terminal",{sourceInterval:[1111,1117]},"Vec4"]]]]],lengthSq:["define",{sourceInterval:[1124,1206]},null,[],["alt",{sourceInterval:[1141,1206]},["app",{sourceInterval:[1141,1168]},"caseInsensitive",[["terminal",{sourceInterval:[1157,1167]},"lengthSq"]]],["app",{sourceInterval:[1176,1206]},"caseInsensitive",[["terminal",{sourceInterval:[1192,1205]},"magnitudeSq"]]]]],distanceSq:["define",{sourceInterval:[1212,1259]},null,[],["app",{sourceInterval:[1230,1259]},"caseInsensitive",[["terminal",{sourceInterval:[1246,1258]},"distanceSq"]]]],length:["define",{sourceInterval:[1265,1340]},null,[],["alt",{sourceInterval:[1279,1340]},["app",{sourceInterval:[1279,1304]},"caseInsensitive",[["terminal",{sourceInterval:[1295,1303]},"length"]]],["app",{sourceInterval:[1312,1340]},"caseInsensitive",[["terminal",{sourceInterval:[1328,1339]},"magnitude"]]]]],distance:["define",{sourceInterval:[1346,1389]},null,[],["app",{sourceInterval:[1362,1389]},"caseInsensitive",[["terminal",{sourceInterval:[1378,1388]},"distance"]]]],normalise:["define",{sourceInterval:[1395,1477]},null,[],["alt",{sourceInterval:[1413,1477]},["app",{sourceInterval:[1413,1441]},"caseInsensitive",[["terminal",{sourceInterval:[1429,1440]},"normalise"]]],["app",{sourceInterval:[1449,1477]},"caseInsensitive",[["terminal",{sourceInterval:[1465,1476]},"normalize"]]]]],dot:["define",{sourceInterval:[1483,1553]},null,[],["alt",{sourceInterval:[1494,1553]},["app",{sourceInterval:[1494,1523]},"caseInsensitive",[["terminal",{sourceInterval:[1510,1522]},"dotproduct"]]],["app",{sourceInterval:[1531,1553]},"caseInsensitive",[["terminal",{sourceInterval:[1547,1552]},"dot"]]]]],angleBetween:["define",{sourceInterval:[1559,1610]},null,[],["app",{sourceInterval:[1579,1610]},"caseInsensitive",[["terminal",{sourceInterval:[1595,1609]},"angleBetween"]]]],lerp:["define",{sourceInterval:[1616,1651]},null,[],["app",{sourceInterval:[1628,1651]},"caseInsensitive",[["terminal",{sourceInterval:[1644,1650]},"lerp"]]]]}]);Ec.exports=ls});var eI={};zh(eI,{default:()=>hs});module.exports=jh(eI);var nn=class{constructor(e){this.capacity=e,this.cache=new Map,this.frequencies=new Map,this.minFrequency=0,this.order=0}updateFrequency(e){let t=this.cache.get(e);if(!t)return;let n=t.frequency;t.frequency++,t.order=this.order++;let a=this.frequencies.get(n);a==null||a.delete(e),a&&a.size===0&&(this.frequencies.delete(n),n===this.minFrequency&&this.minFrequency++);let l=this.frequencies.get(t.frequency);l||(l=new Set,this.frequencies.set(t.frequency,l)),l.add(e)}get(e){let t=this.cache.get(e);if(t)return this.updateFrequency(e),t.value}set(e,t){var l,c;let n=this.cache.get(e);if(n){n.value=t,this.updateFrequency(e);return}if(this.cache.size===this.capacity){let v=this.frequencies.get(this.minFrequency);if(v){let h=null,d=1/0;for(let g of v){let f=(c=(l=this.cache.get(g))==null?void 0:l.order)!=null?c:1/0;f[...i].reduce((e,t)=>Math.imul(31,e)+t.charCodeAt(0)|0,0);var Bs=class{constructor(e){this.lfuCache=new nn(e)}get(e){let t=Sr(e);return this.lfuCache.get(t)}set(e,t){let n=Sr(e);return this.lfuCache.set(n,t),t}clear(){this.lfuCache.clear()}},xr=new Bs(200);var Ys=class{constructor(){this.listeners={}}on(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}emit(e,...t){let n=this.listeners[e];n&&n.forEach(a=>a(...t))}removeListener(e,t){let n=this.listeners[e];if(n){let a=n.indexOf(t);a!==-1&&n.splice(a,1)}}removeAllListeners(){this.listeners={}}},it=new Ys;var Fa=me(br()),b={engine:{explicitMode:!1},interface:{renderResultEndOfLine:!1,showStatusBarCompanion:!0,animateResults:!0,animationClass:"animate__pulse",animationDuration:"200ms"},inlineSolve:{includeExpressionOnCommit:!1,includeBackticksOnCommit:!0,includeEqualsOnCommit:!0},variable:{renderResult:!0},arithmeticProvider:{enabled:!0,renderEqualsBeforeResult:!0},functionArithmeticProvider:{enabled:!0},vectorArithmeticProvider:{enabled:!0},percentageArithmeticProvider:{enabled:!0},datetimeProvider:{enabled:!0,parsingFormat:0},unitOfMeasurementProvider:{enabled:!0},diceProvider:{enabled:!0},bigIntegerArithmeticProvider:{enabled:!0},numberResult:{decimalSeparatorLocale:"en-US"},integerResult:{enableSeperator:!1},floatResult:{enableSeperator:!1,decimalPlaces:2},percentageResult:{enableSeperator:!1,decimalPlaces:2},datetimeResult:{format:Fa.default.defaultFormat},hexResult:{enablePadding:!1,paddingZeros:8},unitOfMeasurementResult:{decimalPlaces:2,unitNames:!1}};var sn=class{constructor(e){this.parent=e}get enabled(){var e;return(e=this.parent.settings.arithmeticProvider.enabled)!=null?e:b.arithmeticProvider.enabled}set enabled(e){this.parent.settings.arithmeticProvider.enabled=e}get renderEqualsBeforeResult(){var e;return(e=this.parent.settings.arithmeticProvider.renderEqualsBeforeResult)!=null?e:b.arithmeticProvider.renderEqualsBeforeResult}set renderEqualsBeforeResult(e){this.parent.settings.arithmeticProvider.renderEqualsBeforeResult=e}};var an=class{constructor(e){this.parent=e}get enabled(){var e;return(e=this.parent.settings.bigIntegerArithmeticProvider.enabled)!=null?e:b.bigIntegerArithmeticProvider.enabled}set enabled(e){this.parent.settings.bigIntegerArithmeticProvider.enabled=e}};var on=class{constructor(e){this.parent=e}get enabled(){var e;return(e=this.parent.settings.datetimeProvider.enabled)!=null?e:b.datetimeProvider.enabled}set enabled(e){this.parent.settings.datetimeProvider.enabled=e}get parsingFormat(){var e;return(e=this.parent.settings.datetimeProvider.parsingFormat)!=null?e:b.datetimeProvider.parsingFormat}set parsingFormat(e){this.parent.settings.datetimeProvider.parsingFormat=e}};var ln=class{constructor(e){this.parent=e}get format(){var e;return(e=this.parent.settings.datetimeResult.format)!=null?e:b.datetimeResult.format}set format(e){this.parent.settings.datetimeResult.format=e}};var un=class{constructor(e){this.parent=e}get enabled(){var e;return(e=this.parent.settings.diceProvider.enabled)!=null?e:b.diceProvider.enabled}set enabled(e){this.parent.settings.diceProvider.enabled=e}};var cn=class{constructor(e){this.parent=e}get explicitMode(){var e;return(e=this.parent.settings.engine.explicitMode)!=null?e:b.engine.explicitMode}set explicitMode(e){this.parent.settings.engine.explicitMode=e}};var pn=class{constructor(e){this.parent=e}get enableSeperator(){var e;return(e=this.parent.settings.floatResult.enableSeperator)!=null?e:b.floatResult.enableSeperator}set enableSeperator(e){this.parent.settings.floatResult.enableSeperator=e}get decimalPlaces(){var e;return(e=this.parent.settings.floatResult.decimalPlaces)!=null?e:b.floatResult.decimalPlaces}set decimalPlaces(e){this.parent.settings.floatResult.decimalPlaces=e}};var mn=class{constructor(e){this.parent=e}get enabled(){var e;return(e=this.parent.settings.functionArithmeticProvider.enabled)!=null?e:b.functionArithmeticProvider.enabled}set enabled(e){this.parent.settings.functionArithmeticProvider.enabled=e}};var vn=class{constructor(e){this.parent=e}get enablePadding(){var e;return(e=this.parent.settings.hexResult.enablePadding)!=null?e:b.hexResult.enablePadding}set enablePadding(e){this.parent.settings.hexResult.enablePadding=e}get paddingZeros(){var e;return(e=this.parent.settings.hexResult.paddingZeros)!=null?e:b.hexResult.paddingZeros}set paddingZeros(e){this.parent.settings.hexResult.paddingZeros=e}};var hn=class{constructor(e){this.parent=e}get includeExpressionOnCommit(){var e;return(e=this.parent.settings.inlineSolve.includeExpressionOnCommit)!=null?e:b.inlineSolve.includeExpressionOnCommit}set includeExpressionOnCommit(e){this.parent.settings.inlineSolve.includeExpressionOnCommit=e}get includeBackticksOnCommit(){var e;return(e=this.parent.settings.inlineSolve.includeBackticksOnCommit)!=null?e:b.inlineSolve.includeBackticksOnCommit}set includeBackticksOnCommit(e){this.parent.settings.inlineSolve.includeBackticksOnCommit=e}get includeEqualsOnCommit(){var e;return(e=this.parent.settings.inlineSolve.includeEqualsOnCommit)!=null?e:b.inlineSolve.includeEqualsOnCommit}set includeEqualsOnCommit(e){this.parent.settings.inlineSolve.includeEqualsOnCommit=e}};var dn=class{constructor(e){this.parent=e}get enableSeperator(){var e;return(e=this.parent.settings.integerResult.enableSeperator)!=null?e:b.integerResult.enableSeperator}set enableSeperator(e){this.parent.settings.integerResult.enableSeperator=e}};var fn=class{constructor(e){this.parent=e}get renderResultEndOfLine(){var e;return(e=this.parent.settings.interface.renderResultEndOfLine)!=null?e:b.interface.renderResultEndOfLine}set renderResultEndOfLine(e){this.parent.settings.interface.renderResultEndOfLine=e}get showStatusBarCompanion(){var e;return(e=this.parent.settings.interface.showStatusBarCompanion)!=null?e:b.interface.showStatusBarCompanion}set showStatusBarCompanion(e){this.parent.settings.interface.showStatusBarCompanion=e}get animateResults(){var e;return(e=this.parent.settings.interface.animateResults)!=null?e:b.interface.animateResults}set animateResults(e){this.parent.settings.interface.animateResults=e}get animationClass(){var e;return(e=this.parent.settings.interface.animationClass)!=null?e:b.interface.animationClass}set animationClass(e){this.parent.settings.interface.animationClass=e}get animationDuration(){var e;return(e=this.parent.settings.interface.animationDuration)!=null?e:b.interface.animationDuration}set animationDuration(e){this.parent.settings.interface.animationDuration=e}};var In=class{constructor(e){this.parent=e}get decimalSeparatorLocale(){var e;return(e=this.parent.settings.numberResult.decimalSeparatorLocale)!=null?e:b.numberResult.decimalSeparatorLocale}set decimalSeparatorLocale(e){this.parent.settings.numberResult.decimalSeparatorLocale=e}};var gn=class{constructor(e){this.parent=e}get enabled(){var e;return(e=this.parent.settings.percentageArithmeticProvider.enabled)!=null?e:b.percentageArithmeticProvider.enabled}set enabled(e){this.parent.settings.percentageArithmeticProvider.enabled=e}};var yn=class{constructor(e){this.parent=e}get enableSeperator(){var e;return(e=this.parent.settings.percentageResult.enableSeperator)!=null?e:b.percentageResult.enableSeperator}set enableSeperator(e){this.parent.settings.percentageResult.enableSeperator=e}get decimalPlaces(){var e;return(e=this.parent.settings.percentageResult.decimalPlaces)!=null?e:b.percentageResult.decimalPlaces}set decimalPlaces(e){this.parent.settings.percentageResult.decimalPlaces=e}};var _n=class{constructor(e){this.parent=e}get enabled(){var e;return(e=this.parent.settings.unitOfMeasurementProvider.enabled)!=null?e:b.unitOfMeasurementProvider.enabled}set enabled(e){this.parent.settings.unitOfMeasurementProvider.enabled=e}};var Sn=class{constructor(e){this.parent=e}get decimalPlaces(){var e;return(e=this.parent.settings.unitOfMeasurementResult.decimalPlaces)!=null?e:b.unitOfMeasurementResult.decimalPlaces}set decimalPlaces(e){this.parent.settings.unitOfMeasurementResult.decimalPlaces=e}get unitNames(){var e;return(e=this.parent.settings.unitOfMeasurementResult.unitNames)!=null?e:b.unitOfMeasurementResult.unitNames}set unitNames(e){this.parent.settings.unitOfMeasurementResult.unitNames=e}};var xn=class{constructor(e){this.parent=e}get renderResult(){var e;return(e=this.parent.settings.variable.renderResult)!=null?e:b.variable.renderResult}set renderResult(e){this.parent.settings.variable.renderResult=e}};var bn=class{constructor(e){this.parent=e}get enabled(){var e;return(e=this.parent.settings.vectorArithmeticProvider.enabled)!=null?e:b.vectorArithmeticProvider.enabled}set enabled(e){this.parent.settings.vectorArithmeticProvider.enabled=e}};var Vt=class Vt{constructor(){this.settings=b,this.engine=new cn(this),this.interface=new fn(this),this.inlineSolve=new hn(this),this.variable=new xn(this),this.arithmeticProvider=new sn(this),this.functionArithmeticProvider=new mn(this),this.vectorArithmeticProvider=new bn(this),this.percentageArithmeticProvider=new gn(this),this.datetimeProvider=new on(this),this.unitOfMeasurementProvider=new _n(this),this.diceProvider=new un(this),this.bigIntegerArithmeticProvider=new an(this),this.numberResult=new In(this),this.integerResult=new dn(this),this.floatResult=new pn(this),this.percentageResult=new yn(this),this.datetimeResult=new ln(this),this.hexResult=new vn(this),this.unitOfMeasurementResult=new Sn(this)}static getInstance(){return Vt.instance||(Vt.instance=new Vt),Vt.instance}updateSettings(e){this.settings=e}};Vt.instance=null;var F=Vt;var Ua=require("@codemirror/view"),wn=class extends Ua.WidgetType{constructor(t,n,a){super();this.userSettings=F.getInstance(),this.expression=n,this.result=a,this.lineNumber=t.lineNumber,this.isInlineSolve=t.isInlineSolve||!1}toDOM(t){let n=t.state.doc.lineAt(t.state.selection.main.head).number,a=document.createElement("div");return a.id=`osr-${this.lineNumber}`,a.title="Click to commit this result",a.addEventListener("click",()=>{it.emit(1,this.lineNumber,this.expression,this.result,this.isInlineSolve)}),this.userSettings.interface.animateResults&&a.style.setProperty("--animate-duration",this.userSettings.interface.animationDuration),a.classList.add("os-result"),this.userSettings.interface.animateResults&&this.lineNumber===n&&a.classList.add("animate__animated",this.userSettings.interface.animationClass),a.textContent=`${this.result}`,a}};var Rn=class i extends Error{constructor(e){super(e||"The executed pipeline has no stages."),this.name="EmptyPipelineError",Error.captureStackTrace(this,i)}};var Lt=class{constructor(){this.firstStage=null;this.lastStage=null}addStage(e){return this.firstStage?(this.lastStage&&this.lastStage.next(e),this.lastStage=e):this.firstStage=this.lastStage=e,this}process(e,t){if(!this.firstStage)throw new Rn;return this.firstStage.process(e,t)}};var X=class{constructor(){this.nextStage=null}next(e){return this.nextStage=e,e}process(e,t){return t=this.execute(e,t),this.nextStage?this.nextStage.process(e,t):t}};var Hs=class extends X{constructor(){super(...arguments);this.commentsRemovalRegex=new RegExp(/((?:#|\/\/).+)/)}execute(t,n){return n.replace(this.commentsRemovalRegex,"")}},Ba=new Hs;var Ws=class extends X{execute(e,t){return F.getInstance().engine.explicitMode&&t.trimEnd().endsWith("=")&&(t=t.substring(0,t.length-1).trimEnd(),e.isAllowedExplicitModeExpression=!0),t}},Ya=new Ws;var zs=class extends X{constructor(){super(...arguments);this.inlineSolveRegex=new RegExp(/s`([^`]*)`/g)}execute(t,n){let a=[],l=[];for(let c of t.originalLineText.matchAll(this.inlineSolveRegex))a.push(c[1]),l.push(c.index);return a.length>0?(t.isInlineSolve=!0,t.inlineSolveIndices=l,a):n}},Ga=new zs;var js=class extends X{constructor(){super(...arguments);this.markdownReplacementRegex=new RegExp(/^(?:(?:[-+*>]|(?:\[\s\])|(?:\d+\.))\s)+/m)}execute(t,n){return n.replace(this.markdownReplacementRegex,"")}},Ha=new js;var $s=class extends X{constructor(){super(...arguments);this.mathjaxFormatRegex=new RegExp(/^(?:\$\$(.+)\$\$)$/g);this.latexFormatRegex=new RegExp(/^(?:\$(.+)\$)$/g)}execute(t,n){let a=this.mathjaxFormatRegex.exec(n);if(a){let c=a[1],v=c.indexOf("=");return v>-1?c.substring(v+1).trim():c}let l=this.latexFormatRegex.exec(n);if(l){let c=l[1],v=c.indexOf("=");return v>-1?c.substring(v+1).trim():c}return n}},Wa=new $s;var T=class i extends Error{constructor(e){super(e||"Unsupported visitor operation"),this.name="UnsupportedVisitorOperationError",Error.captureStackTrace(this,i)}};var te=class{constructor(e,t){this.value=e,this.radix=t}accept(e){return e.visit(this)}};var ve=class{constructor(e){this.value=e}accept(e){return e.visit(this)}};var N=class{constructor(e){this.value=Math.trunc(e)}accept(e){return e.visit(this)}};var x=class{constructor(e){this.value=e}accept(e){return e.visit(this)}};var L=class{constructor(e){this.value=e}accept(e){return e.visit(this)}};var Ze=class{constructor(e){this.value=e}accept(e){return e.visit(this)}};var D=class{constructor(e,t){this.value=e,this.unit=t}accept(e){return e.visit(this)}};var U=class{constructor(e){this.value=e}accept(e){return e.visit(this)}};var k=class{constructor(e){this.value=e}accept(e){return e.visit(this)}};var C=class{constructor(e){this.value=e}accept(e){return e.visit(this)}};function za(i,e,t){let n=i.toLocaleString(e,{maximumFractionDigits:t,minimumFractionDigits:t});switch(e){case"de-DE":n=n.replace(".","");break;default:n=n.replace(",","");break}return n}function wr(i,e=2,t=!1,n="en-US"){return Number.isInteger(i)?t?i.toLocaleString(n,{minimumFractionDigits:0,maximumFractionDigits:0}):za(Math.trunc(i),n,0):t?i.toLocaleString(n,{maximumFractionDigits:e,minimumFractionDigits:e}):za(i,n,e)}var cu=me(Pr()),pu=me(br()),Qt=class{constructor(){this.settings=F.getInstance()}visit(e){if(e instanceof x)return this.visitNumberResult(e);if(e instanceof N)return this.visitHexResult(e);if(e instanceof L)return this.visitPercentageResult(e);if(e instanceof ve)return this.visitDatetimeResult(e);if(e instanceof Ze)return this.visitStringResult(e);if(e instanceof U)return this.visitVector2Result(e);if(e instanceof k)return this.visitVector3Result(e);if(e instanceof C)return this.visitVector4Result(e);if(e instanceof D)return this.visitUnitOfMeasurementResult(e);if(e instanceof te)return this.visitBigIntResult(e);throw new T}visitNumberResult(e){return wr(e.value,this.settings.floatResult.decimalPlaces,!1,this.settings.numberResult.decimalSeparatorLocale).toString()}visitHexResult(e){let t=e.value<0,n=Math.abs(e.value).toString(16).toUpperCase().padStart(this.settings.hexResult.enablePadding?this.settings.hexResult.paddingZeros:0,"0");return t?`-0x${n}`:`0x${n}`}visitPercentageResult(e){return`${e.value.toFixed(this.settings.percentageResult.decimalPlaces)}%`}visitDatetimeResult(e){return e.value.format(pu.default.defaultFormat)}visitStringResult(e){return e.value}visitVector2Result(e){let t=e.value.x.toFixed(this.settings.floatResult.decimalPlaces),n=e.value.y.toFixed(this.settings.floatResult.decimalPlaces);return`(${t}, ${n})`}visitVector3Result(e){let t=e.value.x.toFixed(this.settings.floatResult.decimalPlaces),n=e.value.y.toFixed(this.settings.floatResult.decimalPlaces),a=e.value.z.toFixed(this.settings.floatResult.decimalPlaces);return`(${t}, ${n}, ${a})`}visitVector4Result(e){let t=e.value.x.toFixed(this.settings.floatResult.decimalPlaces),n=e.value.y.toFixed(this.settings.floatResult.decimalPlaces),a=e.value.z.toFixed(this.settings.floatResult.decimalPlaces),l=e.value.w.toFixed(this.settings.floatResult.decimalPlaces);return`(${t}, ${n}, ${a}, ${l})`}visitUnitOfMeasurementResult(e){let t=this.settings.unitOfMeasurementResult.decimalPlaces,n=Number.isInteger(e.value)?e.value:e.value.toFixed(t),a=e.unit;if(this.settings.unitOfMeasurementResult.unitNames){let l=(0,cu.default)().describe(e.unit);a=Math.abs(e.value)>1?l.plural:l.singular}return`${n} ${a}`}visitBigIntResult(e){switch(e.radix){case 2:return`0b${e.value.toString(e.radix)}`;case 10:return e.value.toString(e.radix);case 16:return`0x${e.value.toString(e.radix)}`.toUpperCase();default:return e.value.toString(e.radix)}}};var An=class extends X{constructor(){super();this.previousResultSubstitutionRegex=new RegExp(/:prev/gi);this.resultSubstitutionVisitor=new Qt}execute(t,n){return this.previousResult===void 0||(n=n.replace(this.previousResultSubstitutionRegex,this.resultSubstitutionVisitor.visit(this.previousResult))),n}setPreviousResult(t){this.previousResult=t}};var W={log:(...i)=>{},error:(...i)=>{},warn:(...i)=>{},info:(...i)=>{},debug:(...i)=>{},assert:(i,...e)=>{}};var ri=class extends X{constructor(){super(...arguments);this.variableAssignReplacementRegex=new RegExp(/(?::\w+\s+=)/m)}execute(t,n){let a=F.getInstance();return a.engine.explicitMode&&this.variableAssignReplacementRegex.test(n)&&(t.isAllowedExplicitModeExpression=!0,W.debug("VariableAssignRemovalStage: Detected Variable Assignment Allowing Through Explicit Mode")),a.variable.renderResult&&(n=n.replace(this.variableAssignReplacementRegex,"")),n}},mu=new ri;var Di=me(Hu());var rr=class{constructor(e){this.name=e,this.cacheable=!0}enabled(){throw new Error("Method not implemented.")}provide(e){throw new Error("Method not implemented.")}};var Re=class extends rr{constructor(t){super(t)}};function Xe(i,e){return e*i}function Wu(i,e){return(e-i)/i}function zu(i,e){let t=i*e;return i+t}function ju(i,e){let t=i*e;return i-t}var $u=me(Pr());function Me(i,e){return new D((0,$u.default)(i.value).from(i.unit).to(e.unit),e.unit)}var Ge=class i extends Error{constructor(e){super(e||"Unsupported coercion operation"),this.name="UnsupportedCoercionOperationError",Error.captureStackTrace(this,i)}};var bi=class{visit(e){if(e instanceof N)return e;if(e instanceof x||e instanceof N||e instanceof L)return new N(e.value);throw new Ge}},Ee=new bi;var wi=class{visit(e){if(e instanceof x)return e;if(e instanceof N||e instanceof D||e instanceof L)return new x(e.value);throw new Ge}},G=new wi;var Rt=class{constructor(e){this.right=e}visit(e){if(e instanceof x)return this.number(e,this.right);if(e instanceof N)return this.hex(e,this.right);if(e instanceof L)return this.percentage(e,this.right);if(e instanceof D)return this.unitOfMeasurement(e,this.right);throw new T}number(e,t){if(t instanceof L)return new x(e.value+Xe(t.value,e.value));let n=G.visit(t);return new x(e.value+n.value)}hex(e,t){if(t instanceof L)return new N(e.value+Xe(t.value,e.value));let n=Ee.visit(t);return new N(e.value+n.value)}percentage(e,t){let n=G.visit(t);return new x(e.value+n.value)}unitOfMeasurement(e,t){if(t instanceof L)return new D(e.value+Xe(t.value,e.value),e.unit);if(t instanceof D){let a=Me(t,e);return new D(e.value+a.value,e.unit)}let n=G.visit(t);return new D(e.value+n.value,e.unit)}};var Ri=class{visitPositive(e){return e.value=Math.abs(e.value),e}visitNegative(e){return e.value=-Math.abs(e.value),e}visitConstant(e){switch(e.toLowerCase()){case"pi":return new x(Math.PI);case"e":return new x(Math.E);default:return new x(0)}}visitHex(e){let t=parseInt(e.replace("h","").replace("0x",""),16);return new N(t)}visitNumber(e,t){switch(t){case"de-DE":e=e.replace(",","||").replace(".","").replace("||",".");break;default:e.indexOf(",")>-1&&(e=e.replace(",",""));break}return new x(parseFloat(e))}},et=new Ri;var Dt=class{constructor(e){this.right=e}visit(e){if(e instanceof x)return this.number(e,this.right);if(e instanceof N)return this.hex(e,this.right);if(e instanceof L)return this.percentage(e,this.right);if(e instanceof D)return this.unitOfMeasurement(e,this.right);throw new T}number(e,t){let n=G.visit(t);return new x(e.value/n.value)}hex(e,t){let n=Ee.visit(t);return new N(e.value/n.value)}percentage(e,t){let n=G.visit(t);return new x(e.value/n.value)}unitOfMeasurement(e,t){if(t instanceof D){let a=Me(t,e);return new D(e.value/a.value,e.unit)}let n=G.visit(t);return new D(e.value/n.value,e.unit)}};var Pt=class{constructor(e){this.right=e}visit(e){if(this.right instanceof L)throw new T;if(e instanceof x)return this.number(e,this.right);if(e instanceof N)return this.hex(e,this.right);if(e instanceof D)return this.unitOfMeasurement(e,this.right);throw new T}number(e,t){let n=G.visit(t);return new x(Math.pow(e.value,n.value))}hex(e,t){let n=Ee.visit(t);return new N(Math.pow(e.value,n.value))}unitOfMeasurement(e,t){if(t instanceof D){let a=Me(t,e);return new D(Math.pow(e.value,a.value),e.unit)}let n=G.visit(t);return new D(Math.pow(e.value,n.value),e.unit)}};var Bn=class{constructor(e){this.right=e}visit(e){if(this.right instanceof L)throw new T;if(e instanceof x)return this.number(e,this.right);if(e instanceof N)return this.hex(e,this.right);if(e instanceof D)return this.unitOfMeasurement(e,this.right);throw new T}number(e,t){let n=G.visit(t);return new x(e.value<>n.value)}hex(e,t){let n=Ee.visit(t);return new N(e.value>>n.value)}percentage(e,t){let n=G.visit(t);return new x(e.value/100>>n.value)}unitOfMeasurement(e,t){if(t instanceof D){let a=Me(t,e);return new D(e.value>>a.value,e.unit)}let n=G.visit(t);return new D(e.value>>n.value,e.unit)}};var Gn=class{constructor(e){this.right=e}visit(e){if(e instanceof x)return this.number(e,this.right);if(e instanceof N)return this.hex(e,this.right);if(e instanceof L)return this.percentage(e,this.right);if(e instanceof D)return this.unitOfMeasurement(e,this.right);throw new T}number(e,t){let n=G.visit(t);return new x(e.value%n.value)}hex(e,t){let n=Ee.visit(t);return new N(e.value%n.value)}percentage(e,t){let n=G.visit(t);return new x(e.value%n.value)}unitOfMeasurement(e,t){if(t instanceof D){let a=Me(t,e);return new D(e.value%a.value,e.unit)}let n=G.visit(t);return new D(e.value%n.value,e.unit)}};var Mt=class{constructor(e){this.right=e}visit(e){if(e instanceof x)return this.number(e,this.right);if(e instanceof N)return this.hex(e,this.right);if(e instanceof L)return this.percentage(e,this.right);if(e instanceof D)return this.unitOfMeasurement(e,this.right);throw new T}number(e,t){let n=G.visit(t);return new x(e.value*n.value)}hex(e,t){let n=Ee.visit(t);return new N(e.value*n.value)}percentage(e,t){let n=G.visit(t);return new x(e.value*n.value)}unitOfMeasurement(e,t){if(t instanceof D){let a=Me(t,e);return new D(e.value*a.value,e.unit)}let n=G.visit(t);return new D(e.value*n.value,e.unit)}};var Et=class{constructor(e){this.right=e}visit(e){if(e instanceof x)return this.number(e,this.right);if(e instanceof N)return this.hex(e,this.right);if(e instanceof L)return this.percentage(e,this.right);if(e instanceof D)return this.unitOfMeasurement(e,this.right);throw new T}number(e,t){if(t instanceof L)return new x(e.value-Xe(t.value,e.value));let n=G.visit(t);return new x(e.value-n.value)}hex(e,t){if(t instanceof L)return new N(e.value-Xe(t.value,e.value));let n=Ee.visit(t);return new N(e.value-n.value)}percentage(e,t){if(t instanceof L)return new x(e.value-Xe(t.value,e.value));let n=G.visit(t);return new x(e.value-n.value)}unitOfMeasurement(e,t){if(t instanceof L)return new D(e.value-Xe(t.value,e.value),e.unit);if(t instanceof D){let a=Me(t,e);return new D(e.value-a.value,e.unit)}let n=G.visit(t);return new D(e.value-n.value,e.unit)}};var He={LogicalShift_left(i,e,t){let n=i.visit(),a=t.visit();return n.accept(new Bn(a))},LogicalShift_right(i,e,t){let n=i.visit(),a=t.visit();return n.accept(new Yn(a))},AS_addition(i,e,t){let n=i.visit(),a=t.visit();return n.accept(new Rt(a))},AS_subtraction(i,e,t){let n=i.visit(),a=t.visit();return n.accept(new Et(a))},MD_multiplication(i,e,t){let n=i.visit(),a=t.visit();return n.accept(new Mt(a))},MD_division(i,e,t){let n=i.visit(),a=t.visit();return n.accept(new Dt(a))},MD_modulo(i,e,t){let n=i.visit(),a=t.visit();return n.accept(new Gn(a))},E_exponent(i,e,t){let n=i.visit(),a=t.visit();return n.accept(new Pt(a))},P_parenthesis(i,e,t){return e.visit()},Primitive_positive(i,e){return et.visitPositive(e.visit())},Primitive_negative(i,e){return et.visitNegative(e.visit())},constant(i){return et.visitConstant(this.sourceString)},hex(i,e){return et.visitHex(this.sourceString)},number(i,e){let t=F.getInstance().numberResult.decimalSeparatorLocale;return et.visitNumber(this.sourceString,t)}};var Hn="BasicArithmeticProvider",Ku="BigIntegerArithmeticProvider",Zu="DatetimeProvider",Ju="DiceProvider",Qu="FunctionArithmeticProvider",Xu="PercentageArithmeticProvider",ec="UnitsOfMeasurementProvider",tc="VectorArithmeticProvider";var Wn=class extends Re{constructor(){super(Hn),this.semantics=Di.default.createSemantics(),this.semantics.addOperation("visit()",He)}enabled(){return F.getInstance().arithmeticProvider.enabled}provide(e){try{let t=Di.default.match(e);return t.failed()?void 0:this.semantics(t).visit()}catch(t){W.error(t);return}}};var Pi=me(nc());var zn=class extends Re{constructor(){super(Ku),this.semantics=Pi.default.createSemantics(),this.semantics.addOperation("visit()",{Bitwise_leftShift(e,t,n){let a=e.visit(),l=n.visit();return new te(BigInt(a.value<>l.value),a.radix)},Bitwise_unsignedRightShift(e,t,n){let a=e.visit(),l=n.visit();return new te(BigInt(a.value>>>l.value),a.radix)},Bitwise_AND(e,t,n){let a=e.visit(),l=n.visit();return new te(BigInt(a.value&l.value),a.radix)},Bitwise_XOR(e,t,n){let a=e.visit(),l=n.visit();return new te(BigInt(a.value^l.value),a.radix)},Bitwise_OR(e,t,n){let a=e.visit(),l=n.visit();return new te(BigInt(a.value|l.value),a.radix)},AS_addition(e,t,n){let a=e.visit(),l=n.visit();return new te(BigInt(a.value+l.value),a.radix)},AS_subtraction(e,t,n){let a=e.visit(),l=n.visit();return new te(BigInt(a.value-l.value),a.radix)},MD_multiplication(e,t,n){let a=e.visit(),l=n.visit();return new te(BigInt(a.value*l.value),a.radix)},MD_division(e,t,n){let a=e.visit(),l=n.visit();return new te(BigInt(a.value/l.value),a.radix)},MD_remainder(e,t,n){let a=e.visit(),l=n.visit();return new te(BigInt(a.value%l.value),a.radix)},E_exponent(e,t,n){let a=e.visit(),l=n.visit();return new te(BigInt(a.value**l.value),a.radix)},P_parenthesis(e,t,n){return t.visit()},hex(e,t){return new te(BigInt(this.sourceString),16)},binary(e,t){return new te(BigInt(this.sourceString),2)},bigInteger(e){return new te(BigInt(this.sourceString),10)}}),this.cacheable=!0}enabled(){return F.getInstance().arithmeticProvider.enabled}provide(e){try{let t=Pi.default.match(e);return t.failed()?void 0:this.semantics(t).visit()}catch(t){W.error(t);return}}};var Ei=me(ic());var Nr=me(br()),Mi=i=>{switch(i){case"sunday":return 0;case"monday":return 1;case"tuesday":return 2;case"wednesday":return 3;case"thursday":return 4;case"friday":return 5;case"saturday":return 6}return 0},ac=i=>{let e=(0,Nr.default)().startOf("day"),t=(0,Nr.default)().isoWeekday(i);return t.isSame(e,"day")?t.add(1,"week"):t.isSameOrAfter(e)?t:t.add(1,"week")},oc=i=>{let e=(0,Nr.default)().startOf("day"),t=(0,Nr.default)().isoWeekday(i);return t.isSame(e,"day")?t.subtract(1,"week"):t.isBefore(e)?t:t.subtract(1,"week")};var lt=me(br()),jn=class extends Re{constructor(){super(Zu),this.cacheable=!1,this.semantics=Ei.default.createSemantics(),this.semantics.addOperation("visit()",{Addition(e,t,n){let a=e.visit(),l=parseInt(n.child(0).sourceString),c=n.child(1).sourceString;return new ve(a.value.add(l,c))},Subtraction(e,t,n){let a=e.visit(),l=parseInt(n.child(0).sourceString),c=n.child(1).sourceString;return new ve(a.value.subtract(l,c))},Primitive(e){return e.visit()},Now(e){return new ve((0,lt.default)())},Today(e){return new ve((0,lt.default)().startOf("day"))},Tomorrow(e){return new ve((0,lt.default)().add(1,"day").startOf("day"))},Yesterday(e){return new ve((0,lt.default)().subtract(1,"day").startOf("day"))},NextDayOfWeek(e,t){let n=t.sourceString.toLowerCase(),a=Mi(n);return new ve(ac(a))},LastDayOfWeek(e,t){let n=t.sourceString.toLowerCase(),a=Mi(n);return new ve(oc(a))},TimeUnitSinceDate(e,t,n){let a=n.visit(),l=(0,lt.default)().startOf("day").diff(a.value,e.sourceString);return new Ze(`${Math.max(l,0)} ${e.sourceString}`)},TimeUnitUntilDate(e,t,n){let l=n.visit().value.diff((0,lt.default)().startOf("day"),e.sourceString);return new Ze(`${Math.max(l,0)} ${e.sourceString}`)},datetimeIso8601(e,t,n,a,l,c,v,h){return new ve((0,lt.default)(this.sourceString))},datetimeFormatEuropeanOrUs(e,t,n,a,l,c){let v=`${e.sourceString}/${n.sourceString}/${l.sourceString} ${c.sourceString}`;switch(F.getInstance().datetimeProvider.parsingFormat){case 0:return new ve((0,lt.default)(v,["DD/MM/YYYY HH:mm:ss"]));case 1:return new ve((0,lt.default)(v,["MM/DD/YYYY HH:mm:ss"]))}},integer(e){return parseInt(this.sourceString)},number(e){return parseFloat(this.sourceString)}})}enabled(){return F.getInstance().datetimeProvider.enabled}provide(e){try{let t=Ei.default.match(e);return t.failed()?void 0:this.semantics(t).visit()}catch(t){return}}};var Ai=me(uc());var $n=class extends Re{constructor(){super(Ju);let e=F.getInstance();this.cacheable=!1,this.semantics=Ai.default.createSemantics();let t=(n,a)=>{if(n>a)throw new Error("'from' value must be less than or equal to 'to' value.");return Math.floor(Math.random()*(a-n+1))+n};this.semantics.addOperation("visit()",{Roll(n,a,l,c,v,h){let d=l.visit(),g=v.visit();return new x(t(d.value,g.value))},Primitive_positive(n,a){return et.visitPositive(a.visit())},Primitive_negative(n,a){return et.visitNegative(a.visit())},number_fract(n,a,l){return et.visitNumber(this.sourceString,e.numberResult.decimalSeparatorLocale)},number_whole(n){return et.visitNumber(this.sourceString,e.numberResult.decimalSeparatorLocale)}}).bind(this)}enabled(){return F.getInstance().diceProvider.enabled}provide(e){try{let t=Ai.default.match(e);return t.failed()?void 0:this.semantics(t).visit()}catch(t){W.error(t);return}}};var Oi=me(mc());var vc=i=>i*(Math.PI/180),hc=i=>i/(Math.PI/180);var dc=(i,e)=>Math.log(e)/Math.log(i);var Zn=class extends Re{constructor(){super(Qu),this.cacheable=!1,this.semantics=Oi.default.FunctionArithmetic.createSemantics(),this.semantics.addOperation("visit()",{...He,DegreesToRadians(e,t,n,a){let l=n.visit();return new x(vc(l.value))},RadiansToDegrees(e,t,n,a){let l=n.visit();return new x(hc(l.value))},LogBase(e,t,n,a,l,c){let v=n.visit(),h=l.visit();return new x(dc(v.value,h.value))},JavascriptMathObjectFunction(e,t,n,a){let l=e.sourceString.toLowerCase(),c=n.asIteration().children.map(h=>h.visit().value),v=Math[l];return new x(v?v(...c):0)}})}enabled(){return F.getInstance().functionArithmeticProvider.enabled}provide(e){try{let t=Oi.default.FunctionArithmetic.match(e);return t.failed()?void 0:this.semantics(t).visit()}catch(t){W.error(t);return}}};var Ni=me(gc());var Qn=class{constructor(e){this.right=e}visit(e){if(e instanceof x)return e.value=ju(e.value,this.right.value),e;throw new T}};var Xn=class{constructor(e){this.right=e}visit(e){if(e instanceof x)return e.value=zu(e.value,this.right.value),e;throw new T}};var es=class{constructor(e){this.right=e}visit(e){if(this.right instanceof L)throw new T;if(e instanceof x){let t=G.visit(this.right);return new L(Wu(e.value,t.value))}throw new T}};var ts=class{constructor(e){this.right=e}visit(e){if(this.right instanceof L)throw new T;if(e instanceof L){let t=G.visit(this.right);return this.right.value=Xe(e.value,t.value),this.right}throw new T}};var rs=class extends Re{constructor(){super(Xu),this.semantics=Ni.default.PercentageArithmetic.createSemantics(),this.semantics.addOperation("visit()",{...He,PercentageOf(e,t,n){let a=e.visit(),l=n.visit();return a.accept(new ts(l))},IncreaseBy(e,t,n,a){let l=t.visit(),c=a.visit();return l.accept(new Xn(c))},DecreaseBy(e,t,n,a){let l=t.visit(),c=a.visit();return l.accept(new Qn(c))},PercentageIncreaseOrDecrease(e,t,n,a){let l=t.visit(),c=a.visit();return l.accept(new es(c))},percentage(e,t){let n=e.visit();return new L(n.value/100)}})}enabled(){return F.getInstance().percentageArithmeticProvider.enabled}provide(e){try{let t=Ni.default.PercentageArithmetic.match(e);return t.failed()?void 0:this.semantics(t).visit()}catch(t){W.error(t);return}}};var Ti=me(Sc());var ss=me(Pr()),is=class extends Re{constructor(){super(ec),this.semantics=Ti.default.UnitsOfMeasurementArithmetic.createSemantics(),this.semantics.addOperation("visit()",{...He,Conversion_best(e,t,n,a){let l=t.visit(),c=(0,ss.default)(l.value).from(l.unit).toBest();return new D(c.val,c.unit)},Conversion_convert(e,t,n,a){let l=t.visit(),c=a.visit();return new D((0,ss.default)(l.value).from(l.unit).to(c.unit),c.unit)},ConversionPossiblities(e,t,n,a){let l=t.visit(),c=(0,ss.default)().from(l.unit).possibilities().join(", ");return new Ze(c)},uom(e,t,n,a){let l=e.visit(),c=a.visit();return new D(l.value,c.unit)},unit(e){return new D(0,this.sourceString)},percentage(e,t){return new L(parseFloat(e.sourceString)/100)}})}enabled(){return F.getInstance().unitOfMeasurementProvider.enabled}provide(e){try{let t=Ti.default.UnitsOfMeasurementArithmetic.match(e);return t.failed()?void 0:this.semantics(t).visit()}catch(t){W.error(t);return}}};var Ci=me(wc()),Fi=me(Pc()),qi=me(Ac());var We=class i{static magnitudeSqrt(e){return e.x*e.x+e.y*e.y}static magnitude(e){return Math.sqrt(i.magnitudeSqrt(e))}static normalise(e){let t=i.magnitude(e);return t===0?i.zero():{x:e.x/t,y:e.y/t}}static dot(e,t){return e.x*t.x+e.y*t.y}static distance(e,t){let n=t.x-e.x,a=t.y-e.y;return Math.sqrt(n*n+a*a)}static distanceSq(e,t){let n=t.x-e.x,a=t.y-e.y;return n*n+a*a}static angleBetween(e,t){let n=i.dot(e,t),a=i.magnitude(e)*i.magnitude(t);return Math.acos(n/a)}static cross(e,t){return e.x*t.y-e.y*t.x}static lerp(e,t,n){n=Math.max(0,Math.min(1,n));let a=e.x+(t.x-e.x)*n,l=e.y+(t.y-e.y)*n;return{x:a,y:l}}static zero(){return{x:0,y:0}}static one(){return{x:1,y:1}}};var ze=class i{static magnitudeSqrt(e){return e.x*e.x+e.y*e.y+e.z*e.z}static magnitude(e){return Math.sqrt(i.magnitudeSqrt(e))}static normalise(e){let t=i.magnitude(e);return t===0?i.zero():{x:e.x/t,y:e.y/t,z:e.z/t}}static dot(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}static distance(e,t){let n=t.x-e.x,a=t.y-e.y,l=t.z-e.z;return Math.sqrt(n*n+a*a+l*l)}static distanceSq(e,t){let n=t.x-e.x,a=t.y-e.y,l=t.z-e.z;return n*n+a*a+l*l}static angleBetween(e,t){let n=i.dot(e,t),a=i.magnitude(e)*i.magnitude(t);return Math.acos(n/a)}static cross(e,t){let n=e.y*t.z-e.z*t.y,a=e.z*t.x-e.x*t.z,l=e.x*t.y-e.y*t.x;return{x:n,y:a,z:l}}static lerp(e,t,n){n=Math.max(0,Math.min(1,n));let a=e.x+(t.x-e.x)*n,l=e.y+(t.y-e.y)*n,c=e.z+(t.z-e.z)*n;return{x:a,y:l,z:c}}static zero(){return{x:0,y:0,z:0}}static one(){return{x:1,y:1,z:1}}};var tt=class i{static magnitudeSqrt(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w}static magnitude(e){return Math.sqrt(i.magnitudeSqrt(e))}static normalise(e){let t=i.magnitude(e);return t===0?i.zero():{x:e.x/t,y:e.y/t,z:e.z/t,w:e.w/t}}static dot(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w}static distance(e,t){let n=t.x-e.x,a=t.y-e.y,l=t.z-e.z,c=t.w-e.w;return Math.sqrt(n*n+a*a+l*l+c*c)}static distanceSq(e,t){let n=t.x-e.x,a=t.y-e.y,l=t.z-e.z,c=t.w-e.w;return n*n+a*a+l*l+c*c}static angleBetween(e,t){let n=i.dot(e,t),a=i.magnitude(e)*i.magnitude(t);return Math.acos(n/a)}static lerp(e,t,n){n=Math.max(0,Math.min(1,n));let a=e.x+(t.x-e.x)*n,l=e.y+(t.y-e.y)*n,c=e.z+(t.z-e.z)*n,v=e.w+(t.w-e.w)*n;return{x:a,y:l,z:c,w:v}}static zero(){return{x:0,y:0,z:0,w:0}}static one(){return{x:1,y:1,z:1,w:1}}};var Vi=class{visit(e){if(e instanceof U)return e;if(e instanceof x||e instanceof N)return new U({x:e.value,y:e.value});throw new Ge}},Ae=new Vi;var Li=class{visit(e){if(e instanceof k)return e;if(e instanceof x||e instanceof N)return new k({x:e.value,y:e.value,z:e.value});throw new Ge}},Oe=new Li;var ki=class{visit(e){if(e instanceof C)return e;if(e instanceof x||e instanceof N)return new C({x:e.value,y:e.value,z:e.value,w:e.value});throw new Ge}},Ne=new ki;var nr=class{constructor(e){this.right=e}visit(e){if(e instanceof U){let t=Ae.visit(e),n=Ae.visit(this.right);return this.vector2(t,n)}if(e instanceof k){let t=Oe.visit(e),n=Oe.visit(this.right);return this.vector3(t,n)}if(e instanceof C){let t=Ne.visit(e),n=Ne.visit(this.right);return this.vector4(t,n)}throw new T}vector2(e,t){return new U({x:e.value.x+t.value.x,y:e.value.y+t.value.y})}vector3(e,t){return new k({x:e.value.x+t.value.x,y:e.value.y+t.value.y,z:e.value.z+t.value.z})}vector4(e,t){return new C({x:e.value.x+t.value.x,y:e.value.y+t.value.y,z:e.value.z+t.value.z,w:e.value.w+t.value.w})}};var sr=class{constructor(e){this.right=e}visit(e){if(e instanceof U){let t=Ae.visit(e),n=Ae.visit(this.right);return this.vector2(t,n)}if(e instanceof k){let t=Oe.visit(e),n=Oe.visit(this.right);return this.vector3(t,n)}if(e instanceof C){let t=Ne.visit(e),n=Ne.visit(this.right);return this.vector4(t,n)}throw new T}vector2(e,t){return new U({x:e.value.x/t.value.x,y:e.value.y/t.value.y})}vector3(e,t){return new k({x:e.value.x/t.value.x,y:e.value.y/t.value.y,z:e.value.z/t.value.z})}vector4(e,t){return new C({x:e.value.x/t.value.x,y:e.value.y/t.value.y,z:e.value.z/t.value.z,w:e.value.w/t.value.w})}};var ir=class{constructor(e){this.right=e}visit(e){if(e instanceof U){let t=Ae.visit(e),n=Ae.visit(this.right);return this.vector2(t,n)}if(e instanceof k){let t=Oe.visit(e),n=Oe.visit(this.right);return this.vector3(t,n)}if(e instanceof C){let t=Ne.visit(e),n=Ne.visit(this.right);return this.vector4(t,n)}throw new T}vector2(e,t){return new U({x:Math.pow(e.value.x,t.value.x),y:Math.pow(e.value.y,t.value.y)})}vector3(e,t){return new k({x:Math.pow(e.value.x,t.value.x),y:Math.pow(e.value.y,t.value.y),z:Math.pow(e.value.z,t.value.z)})}vector4(e,t){return new C({x:Math.pow(e.value.x,t.value.x),y:Math.pow(e.value.y,t.value.y),z:Math.pow(e.value.z,t.value.z),w:Math.pow(e.value.w,t.value.w)})}};var ar=class{constructor(e){this.right=e}visit(e){if(e instanceof U){let t=Ae.visit(e),n=Ae.visit(this.right);return this.vector2(t,n)}if(e instanceof k){let t=Oe.visit(e),n=Oe.visit(this.right);return this.vector3(t,n)}if(e instanceof C){let t=Ne.visit(e),n=Ne.visit(this.right);return this.vector4(t,n)}throw new T}vector2(e,t){return new U({x:e.value.x*t.value.x,y:e.value.y*t.value.y})}vector3(e,t){return new k({x:e.value.x*t.value.x,y:e.value.y*t.value.y,z:e.value.z*t.value.z})}vector4(e,t){return new C({x:e.value.x*t.value.x,y:e.value.y*t.value.y,z:e.value.z*t.value.z,w:e.value.w*t.value.w})}};var or=class{constructor(e){this.right=e}visit(e){if(e instanceof U){let t=Ae.visit(e),n=Ae.visit(this.right);return this.vector2(t,n)}if(e instanceof k){let t=Oe.visit(e),n=Oe.visit(this.right);return this.vector3(t,n)}if(e instanceof C){let t=Ne.visit(e),n=Ne.visit(this.right);return this.vector4(t,n)}throw new T}vector2(e,t){return new U({x:e.value.x-t.value.x,y:e.value.y-t.value.y})}vector3(e,t){return new k({x:e.value.x-t.value.x,y:e.value.y-t.value.y,z:e.value.z-t.value.z})}vector4(e,t){return new C({x:e.value.x-t.value.x,y:e.value.y-t.value.y,z:e.value.z-t.value.z,w:e.value.w-t.value.w})}};var us=class extends rr{constructor(){super(tc);this.setupVector2Arithmetic(),this.setupVector3Arithmetic(),this.setupVector4Arithmetic()}setupVector2Arithmetic(){this.vector2Semantics=Ci.default.Vector2Arithmetic.createSemantics(),this.vector2Semantics.addOperation("visit()",{...He,AS_addition(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof U)&&!(c instanceof U)?l.accept(new Rt(c)):l.accept(new nr(c))},AS_subtraction(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof U)&&!(c instanceof U)?l.accept(new Et(c)):l.accept(new or(c))},MD_multiplication(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof U)&&!(c instanceof U)?l.accept(new Mt(c)):l.accept(new ar(c))},MD_division(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof U)&&!(c instanceof U)?l.accept(new Dt(c)):l.accept(new sr(c))},E_exponent(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof U)&&!(c instanceof U)?l.accept(new Pt(c)):l.accept(new ir(c))},P_parenthesis(t,n,a){return n.visit()},Vector2_parse(t,n,a,l,c,v){let h=a.visit(),d=c.visit();if(h instanceof U||d instanceof U)throw new TypeError("Expected: Number");return new U({x:h.value,y:d.value})},LengthSq_function(t,n,a,l){var c;return new x(We.magnitudeSqrt((c=a.visit())==null?void 0:c.value))},DistanceSq_function(t,n,a,l,c,v){var h,d;return new x(We.distanceSq((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},Length_function(t,n,a,l){var c;return new x(We.magnitude((c=a.visit())==null?void 0:c.value))},Distance_function(t,n,a,l,c,v){var h,d;return new x(We.distance((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},Normalise_function(t,n,a,l){var c;return new U(We.normalise((c=a.visit())==null?void 0:c.value))},Dot_function(t,n,a,l,c,v){var h,d;return new x(We.dot((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},AngleBetween_function(t,n,a,l,c,v){var h,d;return new x(We.angleBetween((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},Cross_function(t,n,a,l,c,v){var h,d;return new x(We.cross((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},Lerp_function(t,n,a,l,c,v,h,d){var g,f,y;return new U(We.lerp((g=a.visit())==null?void 0:g.value,(f=c.visit())==null?void 0:f.value,(y=h.visit())==null?void 0:y.value))}})}setupVector3Arithmetic(){this.vector3Semantics=Fi.default.Vector3Arithmetic.createSemantics(),this.vector3Semantics.addOperation("visit()",{...He,AS_addition(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof k)&&!(c instanceof k)?l.accept(new Rt(c)):l.accept(new nr(c))},AS_subtraction(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof k)&&!(c instanceof k)?l.accept(new Et(c)):l.accept(new or(c))},MD_multiplication(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof k)&&!(c instanceof k)?l.accept(new Mt(c)):l.accept(new ar(c))},MD_division(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof k)&&!(c instanceof k)?l.accept(new Dt(c)):l.accept(new sr(c))},E_exponent(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof k)&&!(c instanceof k)?l.accept(new Pt(c)):l.accept(new ir(c))},P_parenthesis(t,n,a){return n.visit()},Vector3_parse(t,n,a,l,c,v,h,d){let g=a.visit(),f=c.visit(),y=h.visit();if(g instanceof k||f instanceof k||y instanceof k)throw new TypeError("Expected: Number");return new k({x:g.value,y:f.value,z:y.value})},LengthSq_function(t,n,a,l){var c;return new x(ze.magnitudeSqrt((c=a.visit())==null?void 0:c.value))},DistanceSq_function(t,n,a,l,c,v){var h,d;return new x(ze.distanceSq((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},Length_function(t,n,a,l){var c;return new x(ze.magnitude((c=a.visit())==null?void 0:c.value))},Distance_function(t,n,a,l,c,v){var h,d;return new x(ze.distance((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},Normalise_function(t,n,a,l){var c;return new k(ze.normalise((c=a.visit())==null?void 0:c.value))},Dot_function(t,n,a,l,c,v){var h,d;return new x(ze.dot((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},AngleBetween_function(t,n,a,l,c,v){var h,d;return new x(ze.angleBetween((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},Cross_function(t,n,a,l,c,v){var h,d;return new k(ze.cross((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},Lerp_function(t,n,a,l,c,v,h,d){var g,f,y;return new k(ze.lerp((g=a.visit())==null?void 0:g.value,(f=c.visit())==null?void 0:f.value,(y=h.visit())==null?void 0:y.value))}})}setupVector4Arithmetic(){this.vector4Semantics=qi.default.Vector4Arithmetic.createSemantics(),this.vector4Semantics.addOperation("visit()",{...He,AS_addition(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof C)&&!(c instanceof C)?l.accept(new Rt(c)):l.accept(new nr(c))},AS_subtraction(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof C)&&!(c instanceof C)?l.accept(new Et(c)):l.accept(new or(c))},MD_multiplication(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof C)&&!(c instanceof C)?l.accept(new Mt(c)):l.accept(new ar(c))},MD_division(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof C)&&!(c instanceof C)?l.accept(new Dt(c)):l.accept(new sr(c))},E_exponent(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof C)&&!(c instanceof C)?l.accept(new Pt(c)):l.accept(new ir(c))},P_parenthesis(t,n,a){return n.visit()},Vector4_parse(t,n,a,l,c,v,h,d,g,f){let y=a.visit(),R=c.visit(),_=h.visit(),O=g.visit();if(y instanceof C||R instanceof C||_ instanceof C||O instanceof C)throw new TypeError("Expected: Number");return new C({x:y.value,y:R.value,z:_.value,w:O.value})},LengthSq_function(t,n,a,l){var c;return new x(tt.magnitudeSqrt((c=a.visit())==null?void 0:c.value))},DistanceSq_function(t,n,a,l,c,v){var h,d;return new x(tt.distanceSq((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},Length_function(t,n,a,l){var c;return new x(tt.magnitude((c=a.visit())==null?void 0:c.value))},Distance_function(t,n,a,l,c,v){var h,d;return new x(tt.distance((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},Normalise_function(t,n,a,l){var c;return new C(tt.normalise((c=a.visit())==null?void 0:c.value))},Dot_function(t,n,a,l,c,v){var h,d;return new x(tt.dot((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},AngleBetween_function(t,n,a,l,c,v){var h,d;return new x(tt.angleBetween((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},Lerp_function(t,n,a,l,c,v,h,d){var g,f,y;return new C(tt.lerp((g=a.visit())==null?void 0:g.value,(f=c.visit())==null?void 0:f.value,(y=h.visit())==null?void 0:y.value))}})}tryParseVectorArithmetic(t){let n=qi.default.Vector4Arithmetic.match(t);if(n.succeeded())return this.vector4Semantics(n).visit();let a=Fi.default.Vector3Arithmetic.match(t);if(a.succeeded())return this.vector3Semantics(a).visit();let l=Ci.default.Vector2Arithmetic.match(t);if(l.succeeded())return this.vector2Semantics(l).visit()}enabled(){return F.getInstance().vectorArithmeticProvider.enabled}provide(t){try{return this.tryParseVectorArithmetic(t)}catch(n){W.error(n);return}}};var Ui=class{constructor(){this._debugMode=!1;this.providersMap=new Map,this.settings=F.getInstance(),this.registerCoreProviders()}registerProvider(e){this.providersMap.set(Sr(e.name),e)}provideFirst(e){let t=xr.get(e);if(t)return t;for(let[,n]of this.providersMap)try{if(!n.enabled())continue;let a=n.provide(e);if(a===void 0)continue;return n.cacheable?xr.set(e,[n,a]):[n,a]}catch(a){W.error(a);continue}}registerCoreProviders(){this.registerProvider(new jn),this.registerProvider(new Wn),this.registerProvider(new zn),this.registerProvider(new rs),this.registerProvider(new is),this.registerProvider(new Zn),this.registerProvider(new us),this.registerProvider(new $n)}},lr=new Ui;var cs=class extends X{constructor(){super(...arguments);this.variableAssignmentRegex=new RegExp(/^(:\w+)\s+=/);this.variableSubstitutionRegex=new RegExp(/(:\w+)/g);this.resultSubstitutionVisitor=new Qt;this.variableMap=new Map}execute(t,n){let a=n.match(this.variableAssignmentRegex);if(a){let l=a[1];n=this.assignVariable(l,n)}else n=this.substituteVariables(n);return n}assignVariable(t,n){let a=n.indexOf("=");if(a===-1)return n;let l=n.substring(a+1),c=this.substituteVariables(l);n=n.replace(l,c);let v=lr.provideFirst(c);if(v===void 0)return n;let[,h]=v;return this.variableMap.set(t,h),n}substituteVariables(t){return t.replace(this.variableSubstitutionRegex,n=>{let a=this.variableMap.get(n);return typeof a=="undefined"?n:this.resultSubstitutionVisitor.visit(a)})}reset(){this.variableMap.clear()}};var Bi=class extends X{execute(e,t){let n=F.getInstance(),[a]=e;return a.name!==Hn||n.arithmeticProvider.enabled===!1||n.engine.explicitMode===!1&&(t=`= ${t}`),t}},Oc=new Bi;var ur=class i extends Error{constructor(e){super(e||"The executed pipeline has a received an undefined value in the context."),this.name="UndefinedContextInPipelineError",Error.captureStackTrace(this,i)}};var Yi=class extends X{constructor(){super();this.debugMode=!0}execute(t,n){let[a,l]=t;if(a===void 0||l===void 0)throw new ur;return this.debugMode&&(n+=` [${a.name}]`),n}},Nc=new Yi;var Tc=me(Pr()),ps=class{constructor(){this.settings=F.getInstance()}visit(e){if(e instanceof x)return this.visitNumberResult(e);if(e instanceof N)return this.visitHexResult(e);if(e instanceof L)return this.visitPercentageResult(e);if(e instanceof ve)return this.visitDatetimeResult(e);if(e instanceof Ze)return this.visitStringResult(e);if(e instanceof te)return this.visitBigIntResult(e);if(e instanceof U)return this.visitVector2Result(e);if(e instanceof k)return this.visitVector3Result(e);if(e instanceof C)return this.visitVector4Result(e);if(e instanceof D)return this.visitUnitOfMeasurementResult(e);throw new T}visitNumberResult(e){let t=!1;return Number.isInteger(e.value)?t=this.settings.integerResult.enableSeperator:t=this.settings.floatResult.enableSeperator,wr(e.value,this.settings.floatResult.decimalPlaces,t,this.settings.numberResult.decimalSeparatorLocale).toString()}visitHexResult(e){let t=e.value<0,n=Math.abs(e.value).toString(16).toUpperCase().padStart(this.settings.hexResult.enablePadding?this.settings.hexResult.paddingZeros:0,"0");return t?`-0x${n}`:`0x${n}`}visitPercentageResult(e){return`${wr(e.value*100,this.settings.percentageResult.decimalPlaces,this.settings.percentageResult.enableSeperator,this.settings.numberResult.decimalSeparatorLocale)}%`}visitDatetimeResult(e){return e.value.format(this.settings.datetimeResult.format)}visitStringResult(e){return e.value}visitBigIntResult(e){switch(e.radix){case 2:return`0b${e.value.toString(e.radix)}`;case 10:return e.value.toString(e.radix);case 16:return`0x${e.value.toString(e.radix)}`.toUpperCase();default:return e.value.toString(e.radix)}}visitVector2Result(e){let t=e.value.x.toFixed(this.settings.floatResult.decimalPlaces),n=e.value.y.toFixed(this.settings.floatResult.decimalPlaces);return`(${t}, ${n})`}visitVector3Result(e){let t=e.value.x.toFixed(this.settings.floatResult.decimalPlaces),n=e.value.y.toFixed(this.settings.floatResult.decimalPlaces),a=e.value.z.toFixed(this.settings.floatResult.decimalPlaces);return`(${t}, ${n}, ${a})`}visitVector4Result(e){let t=e.value.x.toFixed(this.settings.floatResult.decimalPlaces),n=e.value.y.toFixed(this.settings.floatResult.decimalPlaces),a=e.value.z.toFixed(this.settings.floatResult.decimalPlaces),l=e.value.w.toFixed(this.settings.floatResult.decimalPlaces);return`(${t}, ${n}, ${a}, ${l})`}visitUnitOfMeasurementResult(e){let t=this.settings.unitOfMeasurementResult.decimalPlaces,n=Number.isInteger(e.value)?e.value:e.value.toFixed(t),a=e.unit;if(this.settings.unitOfMeasurementResult.unitNames){let l=(0,Tc.default)().describe(e.unit);a=Math.abs(e.value)>1?l.plural:l.singular}return`${n} ${a}`}};var Gi=class extends X{constructor(){super();this.formatVisitor=new ps}execute(t,n){let[,a]=t;if(a===void 0)throw new ur;return n=this.formatVisitor.visit(a),n}},Vc=new Gi;var Lc=require("@codemirror/language"),kc=require("@codemirror/state"),Cc=require("@codemirror/view");var Qf=!1,ms=class{constructor(e){this.ignoreNodeForMaskString=["Document","quote","list","HyperMD-list-line","math"];W.debug("[SolveViewPlugin] Constructer"),this.userSettings=F.getInstance(),this.previousResultSubstitutionStage=new An,this.variableProcessingStage=new cs,this.expressionProcesser=new Lt().addStage(Ha).addStage(Ba).addStage(Wa),this.expressionProcesserArray=new Lt().addStage(Ga),this.expressionProcesserFinal=new Lt().addStage(this.previousResultSubstitutionStage).addStage(this.variableProcessingStage).addStage(Ya).addStage(mu),this.resultProcessor=new Lt().addStage(Vc).addStage(Oc),this.decorations=this.buildDecorations(e)}update(e){(e.docChanged||e.viewportChanged)&&(it.emit(0,1),this.variableProcessingStage.reset(),this.decorations=this.buildDecorations(e.view),it.emit(0,0))}destroy(){W.debug("[SolveViewPlugin] Destroyed")}buildDecorations(e){let t=new kc.RangeSetBuilder,n=(0,Lc.syntaxTree)(e.state),a=e.visibleRanges,l=new Set,c=!0,v=0,h=0,d=!1;for(let{from:g,to:f}of a){let y=new Array;n.iterate({from:g,to:f,enter:O=>{if(this.isNodeIgnoredFromMask(O.type.name))return;c&&(c=!1,v=O.to,h=O.from);let K=O.from-v<=1;O.to<=v||K?(K&&(v=O.to),d=!0):(y.push([h,v]),h=O.from,v=O.to,d=!1)}}),d&&y.push([h,v]);let R=e.state.doc.iterRange(g,f),_=0;for(let O of R){let K=g+_,ee=e.state.doc.lineAt(K),ae=ee.text.trimStart(),At=ee.text.length-ae.length;if(ae=ae.trimEnd(),!ae||ae.length===0){_+=O.length;continue}if(l.has(ee.number)){_+=O.length;continue}if(this.isRangeInMask(y,ee.from,ee.to)){_+=O.length;continue}let je={lineNumber:ee.number,originalLineText:ae,isAllowedExplicitModeExpression:!1};ae=this.expressionProcesser.process(je,ae);let _t=this.expressionProcesserArray.process(je,[ae]);for(let _e=0;_e<_t.length;_e++){let cr=_t[_e];ae=this.expressionProcesserFinal.process(je,cr);let Se=this.provideDecoration(je,ae);if(Se)if(je.isInlineSolve&&je.inlineSolveIndices){let pr=ee.from+3+je.inlineSolveIndices[_e]+At+cr.length;t.add(pr,pr,Se)}else t.add(ee.to,ee.to,Se)}l.add(ee.number),_+=O.length}}return t.finish()}isNodeIgnoredFromMask(e){for(let t=0;t=l&&n<=c)return!0}return!1}provideDecoration(e,t){if(this.userSettings.engine.explicitMode&&!e.isAllowedExplicitModeExpression)return;let n=lr.provideFirst(t);if(n===void 0)return;let a=this.resultProcessor.process(n,""),l=t.trim(),c=a.startsWith("= ")?a.substring(2).trim():a.trim();if(l.toLowerCase()!==c.toLowerCase())return this.previousResultSubstitutionStage.setPreviousResult(n[1]),Qf&&(a=Nc.process(n,a)),Cc.Decoration.widget({widget:new wn(e,t,a),side:1})}};var Hi=(e=>(e.RegisterProvider="solve-register-provider",e))(Hi||{});var Fc={animate__bounce:"bounce",animate__flash:"flash",animate__pulse:"pulse",animate__rubberBand:"rubberBand",animate__shakeX:"shakeX",animate__shakeY:"shakeY",animate__headShake:"headShake",animate__swing:"swing",animate__tada:"tada",animate__wobble:"wobble",animate__jello:"jello",animate__heartBeat:"heartBeat",animate__backInDown:"backInDown",animate__backInLeft:"backInLeft",animate__backInRight:"backInRight",animate__backInUp:"backInUp",animate__bounceIn:"bounceIn",animate__bounceInDown:"bounceInDown",animate__bounceInLeft:"bounceInLeft",animate__bounceInRight:"bounceInRight",animate__bounceInUp:"bounceInUp",animate__fadeIn:"fadeIn",animate__fadeInDown:"fadeInDown",animate__fadeInDownBig:"fadeInDownBig",animate__fadeInLeft:"fadeInLeft",animate__fadeInLeftBig:"fadeInLeftBig",animate__fadeInRight:"fadeInRight",animate__fadeInRightBig:"fadeInRightBig",animate__fadeInUp:"fadeInUp",animate__fadeInUpBig:"fadeInUpBig",animate__fadeInTopLeft:"fadeInTopLeft",animate__fadeInTopRight:"fadeInTopRight",animate__fadeInBottomLeft:"fadeInBottomLeft",animate__fadeInBottomRight:"fadeInBottomRight",animate__flip:"flip",animate__flipInX:"flipInX",animate__flipInY:"flipInY",animate__lightSpeedInRight:"lightSpeedInRight",animate__lightSpeedInLeft:"lightSpeedInLeft",animate__rotateIn:"rotateIn",animate__rotateInDownLeft:"rotateInDownLeft",animate__rotateInDownRight:"rotateInDownRight",animate__rotateInUpLeft:"rotateInUpLeft",animate__rotateInUpRight:"rotateInUpRight",animate__jackInTheBox:"jackInTheBox",animate__rollIn:"rollIn",animate__zoomIn:"zoomIn",animate__zoomInDown:"zoomInDown",animate__zoomInLeft:"zoomInLeft",animate__zoomInRight:"zoomInRight",animate__zoomInUp:"zoomInUp",animate__slideInDown:"slideInDown",animate__slideInLeft:"slideInLeft",animate__slideInRight:"slideInRight",animate__slideInUp:"slideInUp"};var qc={"en-US":"English","de-DE":"Non English"};var A=require("obsidian"),vs=class extends A.PluginSettingTab{constructor(t,n){super(t,n);this.plugin=n}display(){this.containerEl.empty(),this.displayIntroduction(),this.displayEngineSettings(),this.displayInterfaceSettings(),this.displayInlineSolveSettings(),this.displayVariablesSettings(),this.displayProviderManagementSettings(),this.displayArithmeticProviderSettings(),this.displayDatetimeProviderSettings(),this.displayNumberSettings(),this.displayIntegerSettings(),this.displayFloatSettings(),this.displayPercentageSettings(),this.displayDatetimeSettings(),this.displayHexSettings(),this.displayUnitOfMeasurementSettings(),this.displayStyleSettings()}displayIntroduction(){new A.Setting(this.containerEl).setName("Introduction").setHeading(),new A.Setting(this.containerEl).setDesc("Solve is an unobtrusive Obsidian plugin that quietly processes equations and patterns in real time, inspired by NoteMaster's Smart Mode. With solid engineering at its core, Solve enhances note-taking without relying on ChatGPT. For instance, effortlessly calculates date and time expressions (e.g., 'Now + 20 days'), performs arithmetic (e.g., '10 + 5'), and more features are coming soon.")}displayEngineSettings(){new A.Setting(this.containerEl).setName("Engine").setHeading(),new A.Setting(this.containerEl).setName("Explicit mode").setDesc(`Solve will only display results for sentences ending with '=' sign. Default is ${b.engine.explicitMode}`).addToggle(t=>t.setValue(this.plugin.settings.engine.explicitMode).onChange(async n=>{this.plugin.settings.engine.explicitMode=n,await this.plugin.saveSettings()}))}displayInlineSolveSettings(){new A.Setting(this.containerEl).setName("Inline Solve").setHeading(),new A.Setting(this.containerEl).setName("Include expression when committing").setDesc(`Solve will include the expression in the format \`EXPRESSION = RESULT\` when committing e.g. '2 + 2 = 4'. Default is ${b.inlineSolve.includeExpressionOnCommit}`).addToggle(t=>t.setValue(this.plugin.settings.inlineSolve.includeExpressionOnCommit).onChange(async n=>{this.plugin.settings.inlineSolve.includeExpressionOnCommit=n,await this.plugin.saveSettings()})),new A.Setting(this.containerEl).setName("Include backticks when committing").setDesc(`Solve will enclose the committed expression in backticks when committing. Default is ${b.inlineSolve.includeBackticksOnCommit}`).addToggle(t=>t.setValue(this.plugin.settings.inlineSolve.includeBackticksOnCommit).onChange(async n=>{this.plugin.settings.inlineSolve.includeBackticksOnCommit=n,await this.plugin.saveSettings()})),new A.Setting(this.containerEl).setName("Include equals when committing").setDesc(`Solve will include the equals when committing. Has no effect if solve is set to include the expression. Default is ${b.inlineSolve.includeBackticksOnCommit}`).addToggle(t=>t.setValue(this.plugin.settings.inlineSolve.includeEqualsOnCommit).onChange(async n=>{this.plugin.settings.inlineSolve.includeEqualsOnCommit=n,await this.plugin.saveSettings()}))}displayVariablesSettings(){new A.Setting(this.containerEl).setName("Variable").setHeading(),new A.Setting(this.containerEl).setName("Show variable result").setDesc(`Solve will display results at the end of variables. Default is ${b.variable.renderResult}`).addToggle(t=>t.setValue(this.plugin.settings.variable.renderResult).onChange(async n=>{this.plugin.settings.variable.renderResult=n,await this.plugin.saveSettings()}))}displayProviderManagementSettings(){new A.Setting(this.containerEl).setName("Provider Management").setHeading(),new A.Setting(this.containerEl).setName("Arithmetic").setDesc(`Enable the arithmetic provider e.g. 10 + 2. Default is ${b.arithmeticProvider.enabled}`).addToggle(t=>t.setValue(this.plugin.settings.arithmeticProvider.enabled).onChange(async n=>{this.plugin.settings.arithmeticProvider.enabled=n,await this.plugin.saveSettings()})),new A.Setting(this.containerEl).setName("Function Arithmetic").setDesc(`Enable the function arithmetic provider e.g. sin(), cos(). Default is ${b.functionArithmeticProvider.enabled}`).addToggle(t=>t.setValue(this.plugin.settings.functionArithmeticProvider.enabled).onChange(async n=>{this.plugin.settings.functionArithmeticProvider.enabled=n,await this.plugin.saveSettings()})),new A.Setting(this.containerEl).setName("Vector Arithmetic").setDesc(`Enable the vector arithmetic provider e.g. (10, 22.3), vec3(1.0, 23, 18.3). Default is ${b.vectorArithmeticProvider.enabled}`).addToggle(t=>t.setValue(this.plugin.settings.vectorArithmeticProvider.enabled).onChange(async n=>{this.plugin.settings.vectorArithmeticProvider.enabled=n,await this.plugin.saveSettings()})),new A.Setting(this.containerEl).setName("Percentage").setDesc(`Enable the percentage provider e.g. 10% of 200, increase 20 by 10%. Default is ${b.percentageArithmeticProvider.enabled}`).addToggle(t=>t.setValue(this.plugin.settings.percentageArithmeticProvider.enabled).onChange(async n=>{this.plugin.settings.percentageArithmeticProvider.enabled=n,await this.plugin.saveSettings()})),new A.Setting(this.containerEl).setName("Datetime").setDesc(`Enable the datetime provider e.g. today + 20 days, last monday. Default is ${b.datetimeProvider.enabled}`).addToggle(t=>t.setValue(this.plugin.settings.datetimeProvider.enabled).onChange(async n=>{this.plugin.settings.datetimeProvider.enabled=n,await this.plugin.saveSettings()})),new A.Setting(this.containerEl).setName("Unit of Measurement").setDesc(`Enable the unit of measurement provider e.g. 10cm + 20, 200cm to m. Default is ${b.unitOfMeasurementProvider.enabled}`).addToggle(t=>t.setValue(this.plugin.settings.unitOfMeasurementProvider.enabled).onChange(async n=>{this.plugin.settings.unitOfMeasurementProvider.enabled=n,await this.plugin.saveSettings()})),new A.Setting(this.containerEl).setName("Dice").setDesc(`Enable the dice provider e.g. roll(1, 100), roll between 1 and 12. Default is ${b.diceProvider.enabled}`).addToggle(t=>t.setValue(this.plugin.settings.diceProvider.enabled).onChange(async n=>{this.plugin.settings.diceProvider.enabled=n,await this.plugin.saveSettings()})),new A.Setting(this.containerEl).setName("Binary (BigInteger)").setDesc(`Enable the binary (BigInteger) provider e.g. 0b10101 >> 4, right shift. Default is ${b.bigIntegerArithmeticProvider.enabled}`).addToggle(t=>t.setValue(this.plugin.settings.bigIntegerArithmeticProvider.enabled).onChange(async n=>{this.plugin.settings.bigIntegerArithmeticProvider.enabled=n,await this.plugin.saveSettings()}))}displayInterfaceSettings(){new A.Setting(this.containerEl).setName("Interface").setHeading(),new A.Setting(this.containerEl).setName("Show result at end of line").setDesc(`Position results at the conclusion of lines, not text's termination. Be cautious when using this setting, as it may cause overlap between the displayed result and the text on the same line. Default is ${b.interface.renderResultEndOfLine}`).addToggle(t=>{let n=this.plugin.settings.interface.renderResultEndOfLine;t.setValue(n),n?document.body.classList.add("osf--result-eol"):document.body.classList.remove("osf--result-eol"),t.onChange(async a=>{this.plugin.settings.interface.renderResultEndOfLine=a,a?document.body.classList.add("osf--result-eol"):document.body.classList.remove("osf--result-eol"),await this.plugin.saveSettings()})}),new A.Setting(this.containerEl).setName("Show status bar companion").setDesc(`Show the Solve companion in the status bar. Default is ${b.interface.showStatusBarCompanion}`).addToggle(t=>t.setValue(this.plugin.settings.interface.showStatusBarCompanion).onChange(async n=>{this.plugin.settings.interface.showStatusBarCompanion=n,n?this.plugin.setStatusBarCompanionVisibility(!0):this.plugin.setStatusBarCompanionVisibility(!1),await this.plugin.saveSettings()})),new A.Setting(this.containerEl).setName("Animate results").setDesc(`Enable animate results on the current active line that is being solved. Default is ${b.interface.animateResults}`).addToggle(t=>t.setValue(this.plugin.settings.interface.animateResults).onChange(async n=>{this.plugin.settings.interface.animateResults=n,await this.plugin.saveSettings()})),new A.Setting(this.containerEl).setName("Animation transition").setDesc(`Specify the transition class name from Animate.css to use on animated results. Default is ${b.interface.animationClass.replace("animate__","")}`).addDropdown(t=>{let n=this.plugin.settings.interface.animationClass;t.addOptions(Fc),t.setValue(n),t.onChange(async a=>{this.plugin.settings.interface.animationClass=a,await this.plugin.saveSettings()})}),new A.Setting(this.containerEl).setName("Animation duration").setDesc(`Specify the animation duration (CSS format) to use for animated results. Default is ${b.interface.animationDuration}`).addText(t=>{let n=this.plugin.settings.interface.animationDuration;t.setValue(n),t.onChange(async a=>{this.plugin.settings.interface.animationDuration=a,await this.plugin.saveSettings()})})}displayArithmeticProviderSettings(){new A.Setting(this.containerEl).setName("Arithmetic Provider").setHeading(),new A.Setting(this.containerEl).setName("Show = before the result").setDesc(`Adds the equals sign before arithmetic results to improve the natural reading of expressions. Default is ${b.arithmeticProvider.renderEqualsBeforeResult}`).addToggle(t=>{let n=this.plugin.settings.arithmeticProvider.renderEqualsBeforeResult;t.setValue(n),t.onChange(async a=>{this.plugin.settings.arithmeticProvider.renderEqualsBeforeResult=a,await this.plugin.saveSettings()})})}displayDatetimeProviderSettings(){new A.Setting(this.containerEl).setName("Datetime Provider").setHeading(),new A.Setting(this.containerEl).setName("Parsing format").setDesc("Specify the format to be used for parsing datetime values.").addDropdown(t=>{let n=this.plugin.settings.datetimeProvider.parsingFormat;switch(t.addOptions({EU:"European DD/MM/YYYY",US:"American - MM/DD/YYYY"}),n){case 0:t.setValue("EU");break;case 1:t.setValue("US");break}t.onChange(async a=>{switch(a){case"EU":this.plugin.settings.datetimeProvider.parsingFormat=0;break;case"US":this.plugin.settings.datetimeProvider.parsingFormat=1;break}await this.plugin.saveSettings()})})}displayNumberSettings(){new A.Setting(this.containerEl).setName("Number Result (Shared)").setHeading(),new A.Setting(this.containerEl).setName("Decimal seperator").setDesc("Specify the seperator format to be used for decimals. Default is English").addDropdown(t=>{let n=this.plugin.settings.numberResult.decimalSeparatorLocale;t.addOptions(qc),t.setValue(n),t.onChange(async a=>{this.plugin.settings.numberResult.decimalSeparatorLocale=a,await this.plugin.saveSettings()})})}displayIntegerSettings(){new A.Setting(this.containerEl).setName("Integer Result").setHeading(),new A.Setting(this.containerEl).setName("Display thousand separators").setDesc(`Adds thousand separators to integer results. Default is ${b.integerResult.enableSeperator}`).addToggle(t=>{let n=this.plugin.settings.integerResult.enableSeperator;t.setValue(n),t.onChange(async a=>{this.plugin.settings.integerResult.enableSeperator=a,await this.plugin.saveSettings()})})}displayFloatSettings(){new A.Setting(this.containerEl).setName("Float Result").setHeading(),new A.Setting(this.containerEl).setName("Display thousand separators").setDesc(`Adds thousand separators to float results. Default is ${b.floatResult.enableSeperator}`).addToggle(t=>{let n=this.plugin.settings.floatResult.enableSeperator;t.setValue(n),t.onChange(async a=>{this.plugin.settings.floatResult.enableSeperator=a,await this.plugin.saveSettings()})}),new A.Setting(this.containerEl).setName("Decimal places").setDesc(`Adjust the number of decimal places, setting to reveal more digits for accuracy or fewer digits for simplicity in number displays. Default is ${b.floatResult.decimalPlaces}`).addSlider(t=>{let n=this.plugin.settings.floatResult.decimalPlaces;t.setLimits(0,17,1),t.setValue(n),t.sliderEl.addEventListener("mouseover",()=>{t.showTooltip()}),t.onChange(async a=>{this.plugin.settings.floatResult.decimalPlaces=a,t.showTooltip(),await this.plugin.saveSettings()})})}displayPercentageSettings(){new A.Setting(this.containerEl).setName("Percentage Result").setHeading(),new A.Setting(this.containerEl).setName("Display thousand separators").setDesc(`Adds thousand separators to percentage results. Default is ${b.percentageResult.enableSeperator}`).addToggle(t=>{let n=this.plugin.settings.percentageResult.enableSeperator;t.setValue(n),t.onChange(async a=>{this.plugin.settings.percentageResult.enableSeperator=a,await this.plugin.saveSettings()})}),new A.Setting(this.containerEl).setName("Decimal places").setDesc(`Adjust the number of decimal places, setting to reveal more digits for accuracy or fewer digits for simplicity in number displays. Default is ${b.percentageResult.decimalPlaces}`).addSlider(t=>{let n=this.plugin.settings.percentageResult.decimalPlaces;t.setLimits(0,17,1),t.setValue(n),t.sliderEl.addEventListener("mouseover",()=>{t.showTooltip()}),t.onChange(async a=>{this.plugin.settings.percentageResult.decimalPlaces=a,t.showTooltip(),await this.plugin.saveSettings()})})}displayDatetimeSettings(){new A.Setting(this.containerEl).setName("Datetime Result").setHeading(),new A.Setting(this.containerEl).setName("Format").setDesc(`The format to use when displaying a date in the result. Default is ${b.datetimeResult.format}`).addMomentFormat(t=>t.setValue(this.plugin.settings.datetimeResult.format).onChange(async n=>{this.plugin.settings.datetimeResult.format=n,await this.plugin.saveSettings()}))}displayHexSettings(){new A.Setting(this.containerEl).setName("Hex Result").setHeading(),new A.Setting(this.containerEl).setName("Value padding").setDesc(`Enable or disable padding the start of hex values with zeros for consistency. Default is ${b.hexResult.enablePadding}`).addToggle(t=>t.setValue(this.plugin.settings.hexResult.enablePadding).onChange(async n=>{this.plugin.settings.hexResult.enablePadding=n,await this.plugin.saveSettings()})),new A.Setting(this.containerEl).setName("Padding zeros").setDesc(`Specify the number of leading zeros to pad hex values with for a uniform appearance. Default is ${b.hexResult.paddingZeros}`).addSlider(t=>{let n=this.plugin.settings.hexResult.paddingZeros;t.setLimits(0,32,1),t.setValue(n),t.sliderEl.addEventListener("mouseover",()=>{t.showTooltip()}),t.onChange(async a=>{this.plugin.settings.hexResult.paddingZeros=a,t.showTooltip(),await this.plugin.saveSettings()})})}displayUnitOfMeasurementSettings(){new A.Setting(this.containerEl).setName("Unit of Measurement Result").setHeading(),new A.Setting(this.containerEl).setName("Decimal places").setDesc(`Adjust the number of decimal places, setting to reveal more digits for accuracy or fewer digits for simplicity in number displays. Default is ${b.unitOfMeasurementResult.decimalPlaces}`).addSlider(t=>{let n=this.plugin.settings.unitOfMeasurementResult.decimalPlaces;t.setLimits(0,17,1),t.setValue(n),t.sliderEl.addEventListener("mouseover",()=>{t.showTooltip()}),t.onChange(async a=>{this.plugin.settings.unitOfMeasurementResult.decimalPlaces=a,t.showTooltip(),await this.plugin.saveSettings()})}),new A.Setting(this.containerEl).setName("Show unit name").setDesc(`Show the unit name in the result instead of the unit abbreviation. Default is ${b.unitOfMeasurementResult.unitNames}`).addToggle(t=>t.setValue(this.plugin.settings.unitOfMeasurementResult.unitNames).onChange(async n=>{this.plugin.settings.unitOfMeasurementResult.unitNames=n,await this.plugin.saveSettings()}))}displayStyleSettings(){new A.Setting(this.containerEl).setName("Style").setHeading(),new A.Setting(this.containerEl).setDesc("The font family and font size settings are inherited from the Obsidian text font. For more advanced styling options, consider using the Style Settings plugin by @mgmeyers.")}};function Uc(i,e=-1){let t=i.filter(n=>n>e);return t.length===0?e:Math.min(...t)}function Bc(i,e,t,n=!0){return n?i.substring(0,e).trimEnd()+t+i.substring(e).trim():i.substring(0,e)+t+i.substring(e)}var Yc=require("@codemirror/view"),Tr=require("obsidian"),hs=class extends Tr.Plugin{async onload(){W.debug("[Solve] onload()"),await this.registerEvents(),await this.restoreUserSettings(),W.debug("[Solve] User Settings Restored"),await this.registerSettings(),W.debug("[Solve] Registered: Settings"),this.app.workspace.trigger("parse-style-settings"),W.debug("[Solve] Triggered Event: parse-style-setting"),this.registerEvent(this.app.workspace.on(Hi.SolveObsidianEvents,([t])=>{var n,a;W.debug("[Solve] Registered Custom Provider",t),t&&t.name&&t.name.length&&(lr.registerProvider(t),(a=(n=this.app.workspace.activeEditor)==null?void 0:n.editor)==null||a.refresh())})),W.debug("[Solve] Registered: Register Provider Event Listener"),await this.registerEditorExtensions(),W.debug("[Solve] Registered: Editor Extensions"),await this.addStatusBarCompanion(),W.debug("[Solve] Added: Status Bar Companion"),await this.registerCommands()}onunload(){W.debug("[Solve] onunload()"),it.removeAllListeners()}async saveSettings(){let t=this.settings.settings;W.debug("[Solve] Settings Saved",t),await this.saveData(t),xr.clear(),this.app.workspace.updateOptions()}async registerEvents(){it.on(0,this.onStatusBarUpdateEvent.bind(this)),it.on(1,this.onWriteResultEvent.bind(this))}async restoreUserSettings(){this.settings=F.getInstance();let t=await this.loadData();this.settings.updateSettings(Object.assign({},b,t)),await this.restoreFeatureFlags()}async registerSettings(){this.addSettingTab(new vs(this.app,this))}async registerEditorExtensions(){let t=await this.buildMarkdownEditorViewPlugin();this.registerEditorExtension(t)}async buildMarkdownEditorViewPlugin(){return Yc.ViewPlugin.fromClass(ms,{decorations:t=>t.decorations})}async restoreFeatureFlags(){this.settings.interface.renderResultEndOfLine?document.body.classList.add("osf--result-eol"):document.body.classList.remove("osf--result-eol")}async addStatusBarCompanion(){this.statusBarItemEl=this.addStatusBarItem(),this.settings.interface.showStatusBarCompanion||this.setStatusBarCompanionVisibility(!1),it.emit(0,0)}async registerCommands(){this.addCommand({id:"commit-result-current-line",name:"Commit result on current line",editorCallback(t,n){let a=t.getCursor("head").line+1,{containerEl:l}=t,c=l.querySelector(`#osr-${a}`);c?c.click():new Tr.Notice("Solve: Failed to commit, no result found on the current line.")}}),this.addCommand({id:"commit-result-all-visible",name:"Commit all visible results",editorCallback(t,n){let{containerEl:a}=t,l=a.querySelectorAll(".os-result");for(let c=0;cthis.statusBarItemEl.setText("Solve \u{1F634}"),700);break}}async onWriteResultEvent(t,n,a,l){var d,g,f,y;let c=Math.max(0,t-1),v=(g=(d=this.app.workspace.activeEditor)==null?void 0:d.editor)==null?void 0:g.getLine(c);if(typeof v=="undefined")return;let h=Uc([v.indexOf("#"),v.indexOf("//")]);if(h>-1)v=Bc(v,h,` ${a} `);else if(l){let R=this.settings.inlineSolve.includeEqualsOnCommit&&!this.settings.inlineSolve.includeExpressionOnCommit,_=a.toString();_=R?_:_.replace(/^= /,"");let O=this.settings.inlineSolve.includeExpressionOnCommit?`${n} = ${_}`:`${_}`;O=this.settings.inlineSolve.includeBackticksOnCommit?`\`${O}\``:O,v=v.replace(`s\`${n}\``,O)}else v=`${v==null?void 0:v.trimEnd()} ${a}`;(y=(f=this.app.workspace.activeEditor)==null?void 0:f.editor)==null||y.setLine(c,v)}}; +/*! Bundled license information: + +moment/moment.js: + (*! moment.js *) + (*! version : 2.29.4 *) + (*! authors : Tim Wood, Iskren Chernev, Moment.js contributors *) + (*! license : MIT *) + (*! momentjs.com *) +*/ + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/solve/manifest.json b/.obsidian/plugins/solve/manifest.json new file mode 100644 index 0000000..d466d2b --- /dev/null +++ b/.obsidian/plugins/solve/manifest.json @@ -0,0 +1,14 @@ +{ + "id": "solve", + "name": "Solve", + "version": "1.1.0", + "minAppVersion": "0.15.0", + "description": "Supercharge your notes with real-time calculations without AI fuss. From dates ('Now + 20 days'), percentages ('10% of 120'), units of measurement ('100cm + 2m'), arithmetic ('10 + 5') and more!", + "author": "Liam Riddell", + "authorUrl": "https://github.com/LiamRiddell", + "fundingUrl": { + "Buy Me a Coffee": "https://www.buymeacoffee.com/liamriddell", + "GitHub Sponser": "https://github.com/sponsors/LiamRiddell" + }, + "isDesktopOnly": false +} \ No newline at end of file diff --git a/.obsidian/plugins/solve/styles.css b/.obsidian/plugins/solve/styles.css new file mode 100644 index 0000000..8108a05 --- /dev/null +++ b/.obsidian/plugins/solve/styles.css @@ -0,0 +1,76 @@ +/* @settings +name: Solve +id: obsidian-solve +settings: + - + id: solve-result-margin + title: Margin + type: variable-text + default: 0 0 0 4px + - + id: solve-result-padding + title: Padding + type: variable-text + default: 0 0 0 4px + - + id: solve-result-text + title: Text Color + type: variable-themed-color + opacity: true + format: hex + default-light: '#29ce99e8' + default-dark: '#29ce99e8' + - + id: solve-result-background + title: Background Color + type: variable-themed-color + opacity: true + format: hex + default-light: '#22CE9900' + default-dark: '#22CE9900' + - + id: solve-result-border-color + title: Border Color + type: variable-themed-color + opacity: true + format: hex + default-light: '#00000000' + default-dark: '#00000000' + - + id: solve-result-border-style + title: Border Style + type: variable-text + default: solid + - + id: solve-result-border-width + title: Border Width + type: variable-number + default: 0 + format: px + - + id: solve-result-border-radius + title: Border Radius + type: variable-number + default: 4 + format: px + - + id: solve-result-hover-underline-color + title: Text Underline Hover Color + type: variable-themed-color + opacity: true + format: hex + default-light: '#00000000' + default-dark: '#00000000' +*/ +@charset "UTF-8";:root{--animate-duration:1s;--animate-delay:1s;--animate-repeat:1}.animate__animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-duration:var(--animate-duration);animation-duration:var(--animate-duration);-webkit-animation-fill-mode:both;animation-fill-mode:both}.animate__animated.animate__infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animate__animated.animate__repeat-1{-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-iteration-count:var(--animate-repeat);animation-iteration-count:var(--animate-repeat)}.animate__animated.animate__repeat-2{-webkit-animation-iteration-count:2;animation-iteration-count:2;-webkit-animation-iteration-count:calc(var(--animate-repeat)*2);animation-iteration-count:calc(var(--animate-repeat)*2)}.animate__animated.animate__repeat-3{-webkit-animation-iteration-count:3;animation-iteration-count:3;-webkit-animation-iteration-count:calc(var(--animate-repeat)*3);animation-iteration-count:calc(var(--animate-repeat)*3)}.animate__animated.animate__delay-1s{-webkit-animation-delay:1s;animation-delay:1s;-webkit-animation-delay:var(--animate-delay);animation-delay:var(--animate-delay)}.animate__animated.animate__delay-2s{-webkit-animation-delay:2s;animation-delay:2s;-webkit-animation-delay:calc(var(--animate-delay)*2);animation-delay:calc(var(--animate-delay)*2)}.animate__animated.animate__delay-3s{-webkit-animation-delay:3s;animation-delay:3s;-webkit-animation-delay:calc(var(--animate-delay)*3);animation-delay:calc(var(--animate-delay)*3)}.animate__animated.animate__delay-4s{-webkit-animation-delay:4s;animation-delay:4s;-webkit-animation-delay:calc(var(--animate-delay)*4);animation-delay:calc(var(--animate-delay)*4)}.animate__animated.animate__delay-5s{-webkit-animation-delay:5s;animation-delay:5s;-webkit-animation-delay:calc(var(--animate-delay)*5);animation-delay:calc(var(--animate-delay)*5)}.animate__animated.animate__faster{-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-duration:calc(var(--animate-duration)/2);animation-duration:calc(var(--animate-duration)/2)}.animate__animated.animate__fast{-webkit-animation-duration:.8s;animation-duration:.8s;-webkit-animation-duration:calc(var(--animate-duration)*.8);animation-duration:calc(var(--animate-duration)*.8)}.animate__animated.animate__slow{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-duration:calc(var(--animate-duration)*2);animation-duration:calc(var(--animate-duration)*2)}.animate__animated.animate__slower{-webkit-animation-duration:3s;animation-duration:3s;-webkit-animation-duration:calc(var(--animate-duration)*3);animation-duration:calc(var(--animate-duration)*3)}@media (prefers-reduced-motion:reduce),print{.animate__animated{-webkit-animation-duration:1ms!important;animation-duration:1ms!important;-webkit-transition-duration:1ms!important;transition-duration:1ms!important;-webkit-animation-iteration-count:1!important;animation-iteration-count:1!important}.animate__animated[class*=Out]{opacity:0}}@-webkit-keyframes bounce{0%,20%,53%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0) scaleY(1.1);transform:translate3d(0,-30px,0) scaleY(1.1)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0) scaleY(1.05);transform:translate3d(0,-15px,0) scaleY(1.05)}80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0) scaleY(.95);transform:translateZ(0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-4px,0) scaleY(1.02);transform:translate3d(0,-4px,0) scaleY(1.02)}}@keyframes bounce{0%,20%,53%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0) scaleY(1.1);transform:translate3d(0,-30px,0) scaleY(1.1)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0) scaleY(1.05);transform:translate3d(0,-15px,0) scaleY(1.05)}80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0) scaleY(.95);transform:translateZ(0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-4px,0) scaleY(1.02);transform:translate3d(0,-4px,0) scaleY(1.02)}}.animate__bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}.animate__flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__pulse{-webkit-animation-name:pulse;animation-name:pulse;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shakeX{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shakeX{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.animate__shakeX{-webkit-animation-name:shakeX;animation-name:shakeX}@-webkit-keyframes shakeY{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}20%,40%,60%,80%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}}@keyframes shakeY{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}20%,40%,60%,80%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}}.animate__shakeY{-webkit-animation-name:shakeY;animation-name:shakeY}@-webkit-keyframes headShake{0%{-webkit-transform:translateX(0);transform:translate(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translate(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translate(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translate(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translate(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translate(0)}}@keyframes headShake{0%{-webkit-transform:translateX(0);transform:translate(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translate(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translate(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translate(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translate(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translate(0)}}.animate__headShake{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-name:headShake;animation-name:headShake}@-webkit-keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0)}}@keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0)}}.animate__swing{-webkit-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skew(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skew(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skew(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skew(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skew(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skew(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skew(-.1953125deg) skewY(-.1953125deg)}}@keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skew(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skew(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skew(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skew(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skew(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skew(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skew(-.1953125deg) skewY(-.1953125deg)}}.animate__jello{-webkit-animation-name:jello;animation-name:jello;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}.animate__heartBeat{-webkit-animation-name:heartBeat;animation-name:heartBeat;-webkit-animation-duration:1.3s;animation-duration:1.3s;-webkit-animation-duration:calc(var(--animate-duration)*1.3);animation-duration:calc(var(--animate-duration)*1.3);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes backInDown{0%{-webkit-transform:translateY(-1200px) scale(.7);transform:translateY(-1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInDown{0%{-webkit-transform:translateY(-1200px) scale(.7);transform:translateY(-1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInDown{-webkit-animation-name:backInDown;animation-name:backInDown}@-webkit-keyframes backInLeft{0%{-webkit-transform:translateX(-2000px) scale(.7);transform:translate(-2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translate(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInLeft{0%{-webkit-transform:translateX(-2000px) scale(.7);transform:translate(-2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translate(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInLeft{-webkit-animation-name:backInLeft;animation-name:backInLeft}@-webkit-keyframes backInRight{0%{-webkit-transform:translateX(2000px) scale(.7);transform:translate(2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translate(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInRight{0%{-webkit-transform:translateX(2000px) scale(.7);transform:translate(2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translate(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInRight{-webkit-animation-name:backInRight;animation-name:backInRight}@-webkit-keyframes backInUp{0%{-webkit-transform:translateY(1200px) scale(.7);transform:translateY(1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInUp{0%{-webkit-transform:translateY(1200px) scale(.7);transform:translateY(1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInUp{-webkit-animation-name:backInUp;animation-name:backInUp}@-webkit-keyframes backOutDown{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(700px) scale(.7);transform:translateY(700px) scale(.7);opacity:.7}}@keyframes backOutDown{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(700px) scale(.7);transform:translateY(700px) scale(.7);opacity:.7}}.animate__backOutDown{-webkit-animation-name:backOutDown;animation-name:backOutDown}@-webkit-keyframes backOutLeft{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translate(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(-2000px) scale(.7);transform:translate(-2000px) scale(.7);opacity:.7}}@keyframes backOutLeft{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translate(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(-2000px) scale(.7);transform:translate(-2000px) scale(.7);opacity:.7}}.animate__backOutLeft{-webkit-animation-name:backOutLeft;animation-name:backOutLeft}@-webkit-keyframes backOutRight{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translate(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(2000px) scale(.7);transform:translate(2000px) scale(.7);opacity:.7}}@keyframes backOutRight{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translate(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(2000px) scale(.7);transform:translate(2000px) scale(.7);opacity:.7}}.animate__backOutRight{-webkit-animation-name:backOutRight;animation-name:backOutRight}@-webkit-keyframes backOutUp{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(-700px) scale(.7);transform:translateY(-700px) scale(.7);opacity:.7}}@keyframes backOutUp{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(-700px) scale(.7);transform:translateY(-700px) scale(.7);opacity:.7}}.animate__backOutUp{-webkit-animation-name:backOutUp;animation-name:backOutUp}@-webkit-keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__bounceIn{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*.75);animation-duration:calc(var(--animate-duration)*.75);-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0) scaleY(3);transform:translate3d(0,-3000px,0) scaleY(3)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0) scaleY(.9);transform:translate3d(0,25px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,-10px,0) scaleY(.95);transform:translate3d(0,-10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,5px,0) scaleY(.985);transform:translate3d(0,5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0) scaleY(3);transform:translate3d(0,-3000px,0) scaleY(3)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0) scaleY(.9);transform:translate3d(0,25px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,-10px,0) scaleY(.95);transform:translate3d(0,-10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,5px,0) scaleY(.985);transform:translate3d(0,5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0) scaleX(3);transform:translate3d(-3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0) scaleX(1);transform:translate3d(25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(-10px,0,0) scaleX(.98);transform:translate3d(-10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(5px,0,0) scaleX(.995);transform:translate3d(5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0) scaleX(3);transform:translate3d(-3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0) scaleX(1);transform:translate3d(25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(-10px,0,0) scaleX(.98);transform:translate3d(-10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(5px,0,0) scaleX(.995);transform:translate3d(5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0) scaleX(3);transform:translate3d(3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0) scaleX(1);transform:translate3d(-25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(10px,0,0) scaleX(.98);transform:translate3d(10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(-5px,0,0) scaleX(.995);transform:translate3d(-5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0) scaleX(3);transform:translate3d(3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0) scaleX(1);transform:translate3d(-25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(10px,0,0) scaleX(.98);transform:translate3d(10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(-5px,0,0) scaleX(.995);transform:translate3d(-5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0) scaleY(5);transform:translate3d(0,3000px,0) scaleY(5)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,10px,0) scaleY(.95);transform:translate3d(0,10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-5px,0) scaleY(.985);transform:translate3d(0,-5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0) scaleY(5);transform:translate3d(0,3000px,0) scaleY(5)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,10px,0) scaleY(.95);transform:translate3d(0,10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-5px,0) scaleY(.985);transform:translate3d(0,-5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.animate__bounceOut{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*.75);animation-duration:calc(var(--animate-duration)*.75);-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0) scaleY(.985);transform:translate3d(0,10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0) scaleY(3);transform:translate3d(0,2000px,0) scaleY(3)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0) scaleY(.985);transform:translate3d(0,10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0) scaleY(3);transform:translate3d(0,2000px,0) scaleY(3)}}.animate__bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0) scaleX(.9);transform:translate3d(20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0) scaleX(2);transform:translate3d(-2000px,0,0) scaleX(2)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0) scaleX(.9);transform:translate3d(20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0) scaleX(2);transform:translate3d(-2000px,0,0) scaleX(2)}}.animate__bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0) scaleX(.9);transform:translate3d(-20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0) scaleX(2);transform:translate3d(2000px,0,0) scaleX(2)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0) scaleX(.9);transform:translate3d(-20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0) scaleX(2);transform:translate3d(2000px,0,0) scaleX(2)}}.animate__bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0) scaleY(.985);transform:translate3d(0,-10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0) scaleY(.9);transform:translate3d(0,20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0) scaleY(3);transform:translate3d(0,-2000px,0) scaleY(3)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0) scaleY(.985);transform:translate3d(0,-10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0) scaleY(.9);transform:translate3d(0,20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0) scaleY(3);transform:translate3d(0,-2000px,0) scaleY(3)}}.animate__bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate__fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeInTopLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInTopLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInTopLeft{-webkit-animation-name:fadeInTopLeft;animation-name:fadeInTopLeft}@-webkit-keyframes fadeInTopRight{0%{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInTopRight{0%{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInTopRight{-webkit-animation-name:fadeInTopRight;animation-name:fadeInTopRight}@-webkit-keyframes fadeInBottomLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInBottomLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInBottomLeft{-webkit-animation-name:fadeInBottomLeft;animation-name:fadeInBottomLeft}@-webkit-keyframes fadeInBottomRight{0%{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInBottomRight{0%{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInBottomRight{-webkit-animation-name:fadeInBottomRight;animation-name:fadeInBottomRight}@-webkit-keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.animate__fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.animate__fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.animate__fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.animate__fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.animate__fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.animate__fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.animate__fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.animate__fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.animate__fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes fadeOutTopLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}}@keyframes fadeOutTopLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}}.animate__fadeOutTopLeft{-webkit-animation-name:fadeOutTopLeft;animation-name:fadeOutTopLeft}@-webkit-keyframes fadeOutTopRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}}@keyframes fadeOutTopRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}}.animate__fadeOutTopRight{-webkit-animation-name:fadeOutTopRight;animation-name:fadeOutTopRight}@-webkit-keyframes fadeOutBottomRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}}@keyframes fadeOutBottomRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}}.animate__fadeOutBottomRight{-webkit-animation-name:fadeOutBottomRight;animation-name:fadeOutBottomRight}@-webkit-keyframes fadeOutBottomLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}}@keyframes fadeOutBottomLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}}.animate__fadeOutBottomLeft{-webkit-animation-name:fadeOutBottomLeft;animation-name:fadeOutBottomLeft}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animate__animated.animate__flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.animate__flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.animate__flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}.animate__flipOutX{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*.75);animation-duration:calc(var(--animate-duration)*.75);-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}.animate__flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*.75);animation-duration:calc(var(--animate-duration)*.75);-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedInRight{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skew(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skew(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skew(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes lightSpeedInRight{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skew(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skew(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skew(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__lightSpeedInRight{-webkit-animation-name:lightSpeedInRight;animation-name:lightSpeedInRight;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedInLeft{0%{-webkit-transform:translate3d(-100%,0,0) skewX(30deg);transform:translate3d(-100%,0,0) skew(30deg);opacity:0}60%{-webkit-transform:skewX(-20deg);transform:skew(-20deg);opacity:1}80%{-webkit-transform:skewX(5deg);transform:skew(5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes lightSpeedInLeft{0%{-webkit-transform:translate3d(-100%,0,0) skewX(30deg);transform:translate3d(-100%,0,0) skew(30deg);opacity:0}60%{-webkit-transform:skewX(-20deg);transform:skew(-20deg);opacity:1}80%{-webkit-transform:skewX(5deg);transform:skew(5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__lightSpeedInLeft{-webkit-animation-name:lightSpeedInLeft;animation-name:lightSpeedInLeft;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOutRight{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skew(30deg);opacity:0}}@keyframes lightSpeedOutRight{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skew(30deg);opacity:0}}.animate__lightSpeedOutRight{-webkit-animation-name:lightSpeedOutRight;animation-name:lightSpeedOutRight;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes lightSpeedOutLeft{0%{opacity:1}to{-webkit-transform:translate3d(-100%,0,0) skewX(-30deg);transform:translate3d(-100%,0,0) skew(-30deg);opacity:0}}@keyframes lightSpeedOutLeft{0%{opacity:1}to{-webkit-transform:translate3d(-100%,0,0) skewX(-30deg);transform:translate3d(-100%,0,0) skew(-30deg);opacity:0}}.animate__lightSpeedOutLeft{-webkit-animation-name:lightSpeedOutLeft;animation-name:lightSpeedOutLeft;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateIn{0%{-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateOut{0%{opacity:1}to{-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}@keyframes rotateOut{0%{opacity:1}to{-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}.animate__rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes rotateOutDownLeft{0%{opacity:1}to{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{opacity:1}to{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}.animate__rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateOutDownRight{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.animate__rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateOutUpLeft{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.animate__rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateOutUpRight{0%{opacity:1}to{-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}@keyframes rotateOutUpRight{0%{opacity:1}to{-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}.animate__rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes hinge{0%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.animate__hinge{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-duration:calc(var(--animate-duration)*2);animation-duration:calc(var(--animate-duration)*2);-webkit-animation-name:hinge;animation-name:hinge;-webkit-transform-origin:top left;transform-origin:top left}@-webkit-keyframes jackInTheBox{0%{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes jackInTheBox{0%{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.animate__jackInTheBox{-webkit-animation-name:jackInTheBox;animation-name:jackInTheBox}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}@keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}.animate__rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.animate__zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}.animate__zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0)}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0)}}.animate__zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft;-webkit-transform-origin:left center;transform-origin:left center}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0)}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0)}}.animate__zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight;-webkit-transform-origin:right center;transform-origin:right center}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.animate__slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.animate__slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.animate__slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.animate__slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}.os--beta-tag :after{content:"BETA";font-size:var(--font-ui-smaller);font-weight:var(--font-semibold);vertical-align:top;background-color:var(--interactive-accent);margin-left:8px;height:20px;width:34px;display:inline-flex;justify-content:center;align-items:center;border-radius:var(--radius-s)}.osf--result-eol .os-result{position:absolute;right:0}.os-result{display:inline-flex;margin:var(--solve-result-margin, 0 0 0 4px);padding:var(--solve-result-padding, 0 0 0 4px);line-height:var(--line-height-normal);color:var(--solve-result-text, #29ce99e8);background-color:var(--solve-result-background, #22ce9900);font-family:var(--font-text);font-size:var(--font-text-size, 16px);border-color:var(--solve-result-border-color, transparent);border-style:var(--solve-result-border-style, solid);border-width:var(--solve-result-border-width, 0);border-radius:var(--solve-result-border-radius, 4px);text-decoration:dotted;text-decoration-line:underline;text-underline-offset:2px;text-decoration-color:transparent;transition:all .15s;-webkit-font-smoothing:antialiased;backface-visibility:hidden;transform:translateZ(0)}.os-result:hover{cursor:pointer;text-decoration-color:var( --solve-result-hover-underline-color, currentColor )} +/*! Bundled license information: + +animate.css/animate.min.css: + (*! + * animate.css - https://animate.style/ + * Version - 4.1.1 + * Licensed under the MIT license - http://opensource.org/licenses/MIT + * + * Copyright (c) 2020 Animate.css + *) +*/ diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 3cb4d20..bc4967a 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -4,67 +4,49 @@ "type": "split", "children": [ { - "id": "06a172e6fdedfbf5", + "id": "8d35ee3dbc1e7652", "type": "tabs", "children": [ { - "id": "46cbecdfd83b10e4", + "id": "db16746106a49cac", "type": "leaf", "state": { "type": "markdown", "state": { - "file": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Documentation/Test - Fatto su Maselli - 06-05-2025.md", + "file": "03-VM/44 - 98050 - Fiera/IO/Mapping Divider.md", "mode": "source", "source": false, "backlinks": false }, "icon": "lucide-file", - "title": "Test - Fatto su Maselli - 06-05-2025" + "title": "Mapping Divider" } }, { - "id": "5964c169ed489ae8", + "id": "5db613eb1ce999fb", "type": "leaf", "state": { - "type": "markdown", + "type": "excalidraw", "state": { - "file": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Hardware used for 485-TCP.md", - "mode": "source", - "source": false, - "backlinks": false + "file": "03-VM/44 - 98050 - Fiera/Layout - Anello-Ring.md" }, - "icon": "lucide-file", - "title": "Hardware used for 485-TCP" + "icon": "excalidraw-icon", + "title": "Layout - Anello-Ring" } }, { - "id": "e1a87a8e25c39351", + "id": "075404432f3ecddb", "type": "leaf", "state": { "type": "markdown", "state": { - "file": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/FB2120 - MasseliTCP Read - v1.8.md", - "mode": "source", + "file": "03-VM/44 - 98050 - Fiera/IO/PLC IO Tags.md", + "mode": "preview", "source": false, "backlinks": false }, "icon": "lucide-file", - "title": "FB2120 - MasseliTCP Read - v1.8" - } - }, - { - "id": "2bc2280b9c18e51a", - "type": "leaf", - "state": { - "type": "markdown", - "state": { - "file": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/FB2120 - MasseliTCP Read - v1.8.md", - "mode": "source", - "source": false, - "backlinks": false - }, - "icon": "lucide-file", - "title": "FB2120 - MasseliTCP Read - v1.8" + "title": "PLC IO Tags" } } ], @@ -135,7 +117,8 @@ } ], "direction": "horizontal", - "width": 286.5 + "width": 286.5, + "collapsed": true }, "right": { "id": "403186784ae0fd88", @@ -151,7 +134,7 @@ "state": { "type": "backlink", "state": { - "file": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/FB2120 - MasseliTCP Read - v1.8.md", + "file": "01-Documentation/Routers/Mikrotik - Network Redes/Backups - Mikrotik.md", "collapseAll": false, "extraContext": false, "sortOrder": "alphabetical", @@ -161,7 +144,7 @@ "unlinkedCollapsed": true }, "icon": "links-coming-in", - "title": "Backlinks for FB2120 - MasseliTCP Read - v1.8" + "title": "Backlinks for Backups - Mikrotik" } }, { @@ -233,7 +216,8 @@ "title": "Copilot" } } - ] + ], + "currentTab": 4 } ], "direction": "horizontal", @@ -262,39 +246,44 @@ "obsidian-importer:Open Importer": false } }, - "active": "e1a87a8e25c39351", + "active": "075404432f3ecddb", "lastOpenFiles": [ - "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/FB2120 - MasseliTCP Read - Descrizzione Software - v1.8.md", - "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Hardware used for 485-TCP.md", - "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/FB2120 - MasseliTCP Read - v1.8.md", - "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Untitled/Untitled.md", - "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Untitled/doc1.3.md", + "01-Documentation/Dispositivos - Manuales/Mouse/Problem with drag&drop or Left Click.md", + "01-Documentation/Dispositivos - Manuales/Mouse", + "03-VM/44 - 98050 - Fiera/IO/PLC IO Tags.md", + "03-VM/44 - 98050 - Fiera/IO/Mapping Divider.md", + "01-Documentation/Windows/SysInternals Tools - WinInternals.md", + "03-VM/44 - 98050 - Fiera/IO/Device IO Tags.md", + "01-Documentation/AI - IA - LLM - Artificial Intelligence/AI Prompts useful.md", + "03-VM/44 - 98050 - Fiera/Layout - Anello-Ring.md", + "03-VM/44 - 98050 - Fiera/IO", + "03-VM/44 - 98050 - Fiera/IO - Ips Nodes.md", + "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/DAR Description - DIET AS REGULAR - SAE452 San Giorgio in Bosco.md", + "03-VM/44 - 98050 - Fiera/98050_Hardware.md", + "01-Documentation/Python/Scripts Python/Conda - Anaconda - miniconda.md", + "03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.1 - Esp.md", + "03-VM/44 - 98050 - Fiera/98050_PLC_01_CAx_Export_Hardware_Tree.md", + "03-VM/44 - 98050 - Fiera/98050_PLC_01_CAx_Summary.md", + "01-Documentation/Python/Scripts Python/Calc/Calc v0.3 Pure.md", + "01-Documentation/Python/Scripts Python/Calc/Calc v0.2.md", + "01-Documentation/Python/Scripts Python/Calc/Calc v0.1.md", + "01-Documentation/Python/Scripts Python/Calc/Untitled 1.md", + "01-Documentation/Python/Scripts Python/Untitled.md", + "01-Documentation/Python/Scripts Python/Miniconda Como hacer un backup completo de un entorno creado con Miniconda.md", + "01-Documentation/Python/Scripts Python/Calc", + "01-Documentation/Python/Scripts Python/Group Scripts Manager.md", + "03-VM/41 - 94154 - Update Multilane Table/Notes - Update Multilane Table.md", + "01-Documentation/Routers/Mikrotik - Network Redes/Backups - Mikrotik.md", + "01-Documentation/Routers/Mikrotik - Network Redes/Mikrotik - Comandos WIFI - Clientes de wlan y CAP.md", + "01-Documentation/Routers/Mikrotik - Network Redes/Mikrotik - Setup Commands for Layer 2 Wi-Fi Bridge.md", + "03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.0 - Ita.md", + "03-VM/44 - 98050 - Fiera/adjuntos/Layout-Model.png", + "03-VM/44 - 98050 - Fiera/adjuntos", "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Untitled", "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/adjuntos/Pasted image 20250530095111.png", "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/adjuntos/Pasted image 20250530095053.png", - "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Versiones.md", - "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Untitled 1.md", - "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Untitled.md", - "01-Documentation/Siemens/PLC Siemens/S7-300 - TCON - TRCV.md", "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/adjuntos/Pasted image 20250529221344.png", "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/adjuntos/Pasted image 20250529221334.png", - "01-Documentation/Dispositivos - Manuales/Maselli/Maselli - ADAM - Protocol.md", - "03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo.md", - "03-VM/44 - 98050 - Fiera/Untitled.md", - "01-Documentation/Dockers/Install Docker on Ubuntu.md", - "03-VM/9..... MASTER Transport/Standard Transport/FB Scan Time - FB1.md", - "04-SIDEL/03 - 5.007382-EXMU01UF - RVU008 - EQPT24731/5.007382-EXMU01UF - RVU008 - EQPT24731 - Initial Data.md", - "03-VM/9..... MASTER Transport/Standard Transport/OB30 Calculation.md", - "03-VM/9..... MASTER Transport/Standard Transport/FB Scan Time OB1 - FB4.md", - "01-Documentation/Dockers/Docker Basics - Essential Commands and Usage Guide.md", - "01-Documentation/Dispositivos - Manuales/Waveshare RS232-485 Ethernet - Wifi/Waveshare RS232-485 Ethernet - Wifi - ADAM 4021 - Using Serial200.md", - "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/DAR Description - DIET AS REGULAR - SAE452 San Giorgio in Bosco.md", - "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Documentation/Test - Fatto su Maselli - 06-05-2025.md", - "01-Documentation/GIT - GitHub/GIT commands HELP.md", - "01-Documentation/GIT - GitHub/Notes - Git - Gitea.md", - "01-Documentation/GIT - GitHub/Git - Start New Repository with Visual Studio Code - VS Code.md", - "01-Documentation/GIT - GitHub/GitHub Privacy.md", - "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Documentation/Visit to Maselli 06-05-2025.md", "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/adjuntos/Pasted image 20250526165501.png", "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/adjuntos", "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP", @@ -304,12 +293,7 @@ "01-Documentation/Dispositivos - Manuales/Waveshare RS232-485 Ethernet - Wifi/adjuntos", "01-Documentation/Dispositivos - Manuales/Waveshare RS232-485 Ethernet - Wifi", "01-Documentation/Dispositivos - Manuales/COM - Virtual COM com0com/adjuntos/Pasted image 20250523122236.png", - "01-Documentation/Dispositivos - Manuales/adjuntos/Pasted image 20250522183148.png", "01-Documentation/Dispositivos - Manuales/COM - Virtual COM com0com/adjuntos", - "01-Documentation/Dispositivos - Manuales/COM - Virtual COM com0com/Untitled", - "01-Documentation/Dispositivos - Manuales/COM - Virtual COM com0com", - "01-Documentation/Python/Scripts Python/XML to SCL Siemens", - "04-SIDEL/13 - E5.007560 - Modifica O&U - SAE235", "03-Revised/93789 Sipa Italia - Tinny - HSCounters - Piattaforma/Divider/Untitled.canvas", "04-InLavoro/9..... MASTER Transport/Standard Transport/FB500 Logic.canvas", "04-InLavoro/HENKEL/93040 - HENKEL - BowlingGreen/TL22-L25/Synoptic Change/Q3.canvas", diff --git a/01-Documentation/AI - IA - LLM - Artificial Intelligence/AI Prompts useful.md b/01-Documentation/AI - IA - LLM - Artificial Intelligence/AI Prompts useful.md index 114dfb3..b31d806 100644 --- a/01-Documentation/AI - IA - LLM - Artificial Intelligence/AI Prompts useful.md +++ b/01-Documentation/AI - IA - LLM - Artificial Intelligence/AI Prompts useful.md @@ -301,4 +301,14 @@ Al final del documento, crea una sección titulada "## Excepciones y Problemas" Quiero crer una aplicacion .net 8 en C# WPF que use modelo MVVM con los siguientes nugets si son necesarios CommunityToolkit.Mvvm, Ookii.Dialogs.Wpf, NewtonSoft.Json, Extended.Wpf.Toolkit. +``` + + +#### Para mapear IO de device sobre IO de PLC + +Hacer OCR desde el esquema eléctrico para las IO del PLC +Exportar tags dese Tia Portal y convertirlas con 3:Convertir Excel Tags a Markdown + +``` +Quisiera que me ayudes a adaptar los tags de Device IO Tags a los IO reales del PLC PLC IO Tags usando solo los comentarios ya que no tengo otra informacion. Por favor indicar el nivel de seguridad y si el nivel de seguridad es mas bajo de 70% no adaptar. La tabla resultante deberia ser Device IO Tags con las direcciones del PLC IO Tags. ``` \ No newline at end of file diff --git a/01-Documentation/Dispositivos - Manuales/Mouse/Problem with drag&drop or Left Click.md b/01-Documentation/Dispositivos - Manuales/Mouse/Problem with drag&drop or Left Click.md new file mode 100644 index 0000000..f3161be --- /dev/null +++ b/01-Documentation/Dispositivos - Manuales/Mouse/Problem with drag&drop or Left Click.md @@ -0,0 +1,20 @@ + +### Way 1. Run the SFC and DISM Scans + +Firstly, the problems with drag-and-drop can be due to corrupted system files. Hence, you can run the [System File Checker](https://en.wikipedia.org/wiki/System_File_Checker) (SFC) and Deployment Image Servicing Management (DISM) on your system. The SFC scan detects and replaces the corrupt files, while the DISM scan directly replaces these files from Microsoft. + +The quick steps to run SFC and DISM scans include the following: + +**Step 1:** Type "Powershell" in the search bar. + +**Step 2**. Select the "Run as Administrator" option from the right-side menu. + +**Step 3.** Type the command sfc / scannow and press enter. + +![powershell interface](https://www.easeus.com/images/en/wiki-news/how-to-fix-drag-and-drop-not-working-02.JPG) + +**Step 4.** Wait until the SFC scan is complete. + +**Step 5.** Now, type the command DISM /Online /Cleanup-Image /RestoreHealth and press enter. + +**Step 6.** Wait until the DISM scan is complete, then reboot your system to check if drag-and-drop is functioning properly. \ No newline at end of file diff --git a/01-Documentation/Inverters/Mitsubishi/MR-J4.md b/01-Documentation/Inverters/Mitsubishi/MR-J4.md new file mode 100644 index 0000000..581d919 --- /dev/null +++ b/01-Documentation/Inverters/Mitsubishi/MR-J4.md @@ -0,0 +1,5 @@ + +## MR-J4: + +[Search Results Global \| Mitsubishi Electric Americas](https://us.mitsubishielectric.com/fa/en/search/#q=MR-J4&sort=relevancy&f:@sysfiletype=[zip]&sir=siemens) + diff --git a/01-Documentation/Python/Scripts Python/Calc/Calc v0.1.md b/01-Documentation/Python/Scripts Python/Calc/Calc v0.1.md new file mode 100644 index 0000000..2c2c252 --- /dev/null +++ b/01-Documentation/Python/Scripts Python/Calc/Calc v0.1.md @@ -0,0 +1,236 @@ +# Calculadora Algebraica Híbrida + + + + + +### Concepto Fundamental + +La calculadora mantiene **forma simbólica como representación primaria** y proporciona **evaluación numérica como información complementaria** cuando es posible y útil. + +**Principio de Evaluación Numérica**: El resultado siempre se intenta calcular numéricamente y se muestra cuando la representación string del resultado numérico difiere del resultado algebraico. + +## Sistema de Asignaciones y Ecuaciones + +### Principio: Separación clara entre asignaciones y ecuaciones + +```python +# Asignación de variable +x = 5 # → Se guarda el valor simbólico (NO se agrega como ecuación) +y = x + a # → Se guarda la expresión simbólica + +# Ecuación pura (detección automática) +x**2 + 2*x = 8 # → Se agrega como ecuación Eq(x**2 + 2*x, 8) +a + b = 10 # → Se agrega como ecuación Eq(a + b, 10) +a > b + 1 # → Se agrega como desigualdad +``` + +### Criterios de Detección de Ecuaciones + +**Se considera ecuación si:** + +- Contiene `=` Y NO es una asignación simple de variable +- Contiene operadores de comparación: `==`, `>`, `<`, `>=`, `<=` +- Tiene estructura algebraica en ambos lados del `=` + +**NO se considera ecuación:** + +- Asignaciones simples: `x = 5`, `y = expresión` +- Líneas con solo números o comentarios + +--- + +## Uso de `solve()` y el Atajo `=?` + +### Principio: `variable=?` es equivalente a `solve(variable)` + +```python +# Ambas formas son idénticas: +solve(a) # Resuelve 'a' usando el sistema de ecuaciones +a=? # Atajo sintáctico para solve(a) +``` + +El comando intenta resolver algebraicamente y numéricamente en paralelo cuando es posible. + +--- + +## Sistema de Tokenización con Prioridades + +### Principio: Las prioridades son números arbitrarios que determinan el orden de aplicación + +``` +Prioridad 5: IntBase → Patrón: 16#FF (muy específico) +Prioridad 6: Hex/Bin → Patrón: 0xFF, 0b1010 (específico) +Prioridad 10: FourBytes → Patrón: x.x.x.x (general) +``` + +**Regla**: Menor número = se aplica primero + +Esto garantiza que `16#10.10.10.10` se tokenice como IntBase antes de considerar FourBytes. + +--- + +## Conversión Perezosa y Tipos Especializados + +### Principio: Mantener el tipo especializado siempre que sea posible + +**Se evita convertir a SymPy al máximo**. Los objetos especializados mantienen su tipo cuando pueden resolver la operación internamente. + +```python +# Operaciones que mantienen el tipo especializado: +Hex(15) + 1 → Hex(16) # Hex maneja la suma +16#15 + 1 → 16#16 # IntBase maneja la suma +10.1.1.1 + 1 → 10.1.1.2 # FourBytes maneja la suma + +# Conversión a SymPy solo cuando es necesario: +sin(16#FF) → sin(255) # sin() requiere SymPy +solve(x + 16#10) → solve() # Álgebra compleja requiere SymPy +``` + +**Regla**: Solo se convierte a SymPy cuando el token no es atómico o la operación requiere capacidades algebraicas avanzadas. + +--- + +## Contexto Limpio por Evaluación + +### Principio: Cada evaluación comienza desde cero + +**Contexto Limpio** significa: + +- Se eliminan todas las ecuaciones previas +- Se eliminan todas las variables definidas +- Se re-evalúa todo el contenido línea por línea +- Comportamiento idéntico a iniciar una nueva sesión + +Esto garantiza resultados predecibles y sin efectos secundarios acumulados. + +--- + +## Resultados Interactivos + +### Principio: Activación mediante clicks en elementos con binding + +Los resultados interactivos se crean cuando el tipo de resultado requiere visualización expandida: + +```python +plot(sin(x)) → "📊 Ver Plot" # Click abre ventana matplotlib +Matrix([[1,2],[3,4]]) → "📋 Ver Matriz" # Click muestra matriz formateada +[1,2,3,4,5,6,7,8] → "📋 Ver Lista" # Click expande contenido +``` + +**Activación**: Click en el texto con binding dispara la ventana emergente correspondiente. + +--- + +## Sistema de Autocompletado + +### Principio: Sistema extensible con prioridades (por implementar) + +Se propone usar un sistema de prioridades numéricas similar al de tokenización: + +``` +Prioridad 1: Métodos del objeto específico +Prioridad 2: Métodos de la clase base +Prioridad 3: Funciones SymPy relevantes +Prioridad 4: Helpers contextuales +``` + +--- + +## Integración con SymPy + +### Principio: En casos de conflicto, siempre prevalece SymPy + +Cuando hay ambigüedad o conflicto entre tipos personalizados y SymPy: + +- Funciones SymPy tienen precedencia +- Símbolos SymPy (como `e`, `pi`) mantienen su significado matemático +- Las conversiones fallidas retornan a comportamiento SymPy estándar + +--- + +## Arquitectura de Tipos Personalizados + +### Clases Base Universales + +**IntBase**: Números en cualquier base + +- Aritmética nativa que preserva la base +- Conversión a SymPy solo cuando necesario +- Soporte para símbolos algebraicos + +**FourBytes**: Patrones x.x.x.x + +- Aritmética de 32-bit para IPs +- Soporte para elementos simbólicos +- Base para tipos como IP4 + +### Principio de Extensibilidad + +Cada tipo en `custom_types/` define: + +1. Su lógica de tokenización +2. Sus operaciones aritméticas +3. Sus métodos de conversión +4. Su ayuda contextual +5. Sus sugerencias de autocompletado + +--- + +## Flujo de Evaluación Completo + +``` +Entrada Usuario + ↓ +[Tokenización Universal] + ↓ +¿Asignación o Ecuación? + ├─ Asignación → Guardar valor simbólico + └─ Ecuación → Agregar al sistema + ↓ +[Evaluación] + ├─ Mantener tipo especializado si es posible + └─ Convertir a SymPy si es necesario + ↓ +[Resultado] + ├─ Forma simbólica (siempre) + └─ Evaluación numérica (si difiere como string) +``` + +--- + +## Ejemplos Integrales + +```python +# Tokenización y tipos especializados +16#FF + 2#1010 → 16#109 # IntBase preservado +192.168.1.1 + 5 → 192.168.1.6 # FourBytes preservado + +# Asignaciones vs ecuaciones +x = 10 # Asignación (solo guarda valor) +x + y = 15 # Ecuación (se agrega al sistema) +y=? # solve(y) → y = 5 + +# Evaluación numérica automática +4/5 → 4/5 ≈ 0.8 # Difiere como string +sqrt(2) → √2 ≈ 1.414 # Difiere como string +2 + 3 → 5 # NO se muestra ≈ (igual string) + +# Resultados interactivos +plot(sin(x)) → "📊 Ver Plot" [clickeable] +Matrix([[1,2]]) → "📋 Ver Matriz" [clickeable] +``` + +--- + +## Principios de Diseño Resumidos + +1. **Álgebra primero**: Mantener forma simbólica siempre +2. **Evaluación numérica inteligente**: Mostrar solo cuando agrega valor +3. **Tipos especializados preservados**: Conversión a SymPy solo cuando necesario +4. **Tokenización ordenada**: Sistema de prioridades simple y predecible +5. **Contexto limpio**: Cada evaluación desde cero +6. **Extensibilidad**: Nuevos tipos se integran automáticamente +7. **SymPy prevalece**: En conflictos, el comportamiento matemático estándar gana + +Este documento ahora refleja con precisión la arquitectura implementada y sirve como guía coherente para el desarrollo futuro. \ No newline at end of file diff --git a/01-Documentation/Python/Scripts Python/Calc/Calc v0.2.md b/01-Documentation/Python/Scripts Python/Calc/Calc v0.2.md new file mode 100644 index 0000000..b823d7d --- /dev/null +++ b/01-Documentation/Python/Scripts Python/Calc/Calc v0.2.md @@ -0,0 +1,434 @@ +# Calculator MAV - Hybrid CAS Application Logic +*** +## Overview + +This document describes the operational logic of the Calculator MAV (Hybrid Computer Algebra System), focusing on the semantic flow from user input to result display. The application implements a distributed tokenization system with automatic type discovery, pure algebraic evaluation, and hybrid symbolic-numeric computation. + +## Architecture Components + +### 1. Application Entry Point (calc.py) +The launcher serves as the system bootstrap, handling: +- **Logging Infrastructure**: Establishes comprehensive error tracking with automatic log rotation +- **System Verification**: Validates dependencies and environment setup +- **Error Recovery**: Provides detailed error reporting with context-aware debugging information +- **Application Lifecycle**: Manages startup, execution, and graceful shutdown + +### 2. Main Application Interface (main_calc_app.py) +The GUI application provides: +- **Dual-Pane Interface**: Synchronized input and output panels with smart resizing +- **Real-time Evaluation**: Debounced input processing with automatic width adjustment +- **Interactive Results**: Clickable elements for plots, matrices, and complex data structures +- **Dynamic Help System**: Context-aware assistance using registered type helpers + +### 3. Type Discovery System (type_registry.py) +The core innovation implementing: +- **Automatic Class Detection**: Scans custom_types directory for *_type.py files +- **Dynamic Registration**: Loads classes and their capabilities without code modification +- **Tokenization Pattern Collection**: Aggregates parsing rules from individual types +- **Context Building**: Creates unified namespace for evaluation engine + +## Computation Flow + +### Phase 1: Input Processing + +When a user types in the input panel, the system triggers a processing cycle: + +**Input Capture**: The text widget captures keystrokes and triggers debounced evaluation after 300ms of inactivity. Special handling occurs for dot notation (triggering autocomplete) and real-time content analysis. + +**Content Parsing**: The entire input content is split into lines, with each line processed independently. Empty lines and comments (starting with #) are preserved but bypassed during evaluation. + +**Context Reset**: Before each full evaluation cycle, the algebraic engine clears its internal state, ensuring consistent results regardless of previous computations. + +### Phase 2: Distributed Tokenization + +The tokenization system operates on a priority-based pattern matching approach: + +**Pattern Discovery**: Each registered type contributes tokenization patterns with priority levels. Higher priority patterns (more specific) are applied first, preventing conflicts between similar syntaxes. + +**Expression Transformation**: The universal tokenizer applies transformations in priority order: +- Base number patterns (16#FF, 2#1010) are converted to IntBase constructor calls +- Four-element patterns (192.168.1.1, 10.x.y.z) become FourBytes instances +- Specialized prefixes (0x, 0b) are handled by specific type patterns + +**Bracket Parser Integration**: After tokenization, the bracket parser handles the simplified syntax transformation from Type[value] to Type("value") constructor calls. + +### Phase 3: Line Classification + +The pure algebraic engine analyzes each processed line to determine its semantic type: + +**Assignment Detection**: Lines matching "variable = expression" where the left side is a valid Python identifier are classified as assignments. These create symbol bindings and optionally add implicit equations if undefined symbols are present. + +**Equation Recognition**: Lines containing equals signs that aren't simple assignments become equations. The system distinguishes between algebraic equations (=) and SymPy comparisons (==, <=, >=, !=). + +**Solve Shortcuts**: The pattern "variable=?" is recognized as shorthand for solve(variable), providing quick variable resolution. + +**Expression Evaluation**: All other lines are treated as mathematical expressions for symbolic or numeric evaluation. + +### Phase 4: Symbolic Evaluation + +The evaluation engine operates in pure algebraic mode: + +**SymPy Integration**: All mathematical operations prioritize symbolic representation, maintaining exact forms (fractions, radicals, symbolic expressions) whenever possible. + +**Dynamic Context**: The evaluation context combines: +- Base mathematical functions (sin, cos, integrate, solve, etc.) +- Dynamically registered custom types from the type discovery system +- User-defined variables from previous assignments +- Automatic symbol creation for undefined variables + +**Hybrid Object Handling**: Custom types (IP4, IntBase, FourBytes, etc.) maintain their native operations while integrating seamlessly with SymPy algebra through the SympyClassBase inheritance pattern. + +### Phase 5: Smart Solving + +The equation system implements intelligent resolution: + +**System Building**: Each equation is added to a persistent equation list, with variable extraction and dependency tracking. + +**Variable Resolution**: The solve shortcut (variable=?) triggers sophisticated resolution logic: +- Single-variable equations are solved directly +- Multi-variable systems use SymPy's constraint solver +- Underdetermined systems provide parametric solutions +- Overdetermined systems report conflicts with context + +**Automatic Substitution**: Known variable values are automatically substituted into symbolic expressions, providing immediate numeric evaluation when all symbols are resolved. + +### Phase 6: Result Processing + +The evaluation results undergo format optimization: + +**Display Selection**: The system determines the most informative representation: +- Symbolic form is preserved for exact mathematical expressions +- Numeric approximations are provided when significantly different from symbolic form +- Custom type representations use their native display methods + +**Interactive Enhancement**: Complex results (plots, matrices, large lists) are converted to interactive placeholders that open detailed views when clicked. + +**Error Context**: Failed evaluations trigger contextual help suggestions from registered type helpers, providing guidance based on input patterns. + +### Phase 7: Output Synchronization + +The GUI updates reflect the complete evaluation state: + +**Parallel Display**: Input and output panels maintain line-by-line correspondence, with synchronized scrolling and visual alignment. + +**Color Coding**: Results are tagged with semantic colors: +- Symbolic expressions in blue +- Numeric results in green +- Equations in purple +- Errors in red +- Helper suggestions in gold + +**Layout Adaptation**: The input panel automatically resizes based on content width, maintaining optimal visibility for both mathematical expressions and code. + +## Key Semantic Principles + +### Pure Algebraic Approach +Unlike traditional calculators, this system treats every assignment as a potential equation. Variables maintain their symbolic nature until explicitly evaluated, enabling sophisticated algebraic manipulation. + +### Distributed Extensibility +The type system allows seamless addition of new mathematical objects without modifying core engine code. Each type contributes its own tokenization patterns, helper functions, and algebraic integration. + +### Context Preservation +The evaluation engine maintains a persistent mathematical context across all input lines, enabling complex multi-step calculations and equation system building. + +### Smart Automation +The system automatically: +- Creates symbols for undefined variables +- Applies substitutions when variables are resolved +- Provides numeric approximations when helpful +- Suggests corrections for invalid input patterns + +### Hybrid Integration +Custom types (networking, programming, engineering) integrate seamlessly with pure mathematical operations, enabling domain-specific calculations within a unified algebraic framework. + +This architecture enables the calculator to function as both a powerful symbolic mathematics tool and a specialized computational environment for technical domains, with the flexibility to expand into new areas through the distributed type system. + + +```plantuml +@startuml Calculator_MAV_Flow +!define RECTANGLE class + +title Calculator MAV - Hybrid CAS Processing Flow + +start + +:User types in input panel; +note right: GUI captures keystrokes\nwith 300ms debounce + +:Input Processing Phase; +partition "Input Capture" { + :Split content into lines; + :Preserve comments and empty lines; + :Clear engine context for fresh evaluation; +} + +:Distributed Tokenization Phase; +partition "Pattern Matching" { + :Discover tokenization patterns from registered types; + note left: Type registry auto-discovers\npatterns from custom_types/* + :Apply high-priority patterns first; + note right: 16#FF → IntBase("FF", 16)\n2#1010 → IntBase("1010", 2) + :Apply medium-priority patterns; + note right: 192.168.1.1 → FourBytes("192.168.1.1") + :Apply bracket parser transformations; + note right: Type[value] → Type("value") +} + +:Line Classification Phase; +partition "Semantic Analysis" { + if (Line contains "=?") then (yes) + :Classify as Solve Shortcut; + elseif (Simple assignment pattern?) then (yes) + :Classify as Assignment; + note right: variable = expression\nwhere left side is valid identifier + elseif (Contains = but not assignment?) then (yes) + :Classify as Equation; + note right: x**2 + 2*x = 8\na + b == 10 + else (no) + :Classify as Expression; + endif +} + +:Symbolic Evaluation Phase; +partition "Algebraic Processing" { + if (Assignment type?) then (yes) + :Create symbol binding; + :Check for undefined symbols; + if (Has undefined symbols?) then (yes) + :Add implicit equation to system; + endif + elseif (Equation type?) then (yes) + :Parse left and right sides; + :Create SymPy Eq object; + :Add to equation system; + elseif (Solve shortcut?) then (yes) + :Extract variable name; + :Trigger smart solving; + else (Expression) + :Evaluate with SymPy priority; + :Maintain symbolic form; + :Auto-create undefined symbols; + endif +} + +:Smart Solving Phase; +partition "Equation Resolution" { + if (Solve shortcut triggered?) then (yes) + :Find equations containing variable; + if (Single variable equations?) then (yes) + :Solve directly; + elseif (Multi-variable system?) then (yes) + :Use SymPy constraint solver; + :Handle parametric solutions; + else (no equations) + :Return current symbol value; + endif + endif + :Apply automatic substitutions; + note right: Substitute known values\ninto symbolic expressions +} + +:Result Processing Phase; +partition "Output Formatting" { + :Determine optimal representation; + if (Complex result?) then (yes) + :Create interactive placeholder; + note right: Plots, matrices, large lists\nbecome clickable elements + endif + :Generate numeric approximation if helpful; + :Apply semantic color coding; + note right: Symbolic: blue\nNumeric: green\nEquations: purple\nErrors: red +} + +:Output Synchronization Phase; +partition "GUI Updates" { + :Update output panel with line correspondence; + :Apply synchronized scrolling; + :Auto-resize input panel based on content; + :Enable interactive result clicking; +} + +if (Error occurred?) then (yes) + :Trigger contextual help from type helpers; + note right: Dynamic help based on\ninput patterns and registered types +endif + +stop + +@enduml +``` + + +```plantuml +@startuml Calculator_MAV_Flow_Corrected +!define RECTANGLE class + +title Calculator MAV - Pure Algebraic Engine Processing Flow + +start + +:User types in input panel; +note right: GUI captures keystrokes\nwith 300ms debounce + +:Input Processing Phase; +partition "Input Capture" { + :Split content into lines; + :Preserve comments and empty lines; + :Clear engine context for fresh evaluation; + note right: PureAlgebraicEngine.clear_context() +} + +:Distributed Tokenization Phase; +partition "Pattern Matching" { + :Apply dynamic tokenization patterns; + note left: From get_registered_tokenization_patterns() + :Transform expressions in priority order; + note right: 16#FF → IntBase("FF", 16)\n192.168.1.1 → FourBytes("192.168.1.1") + :Apply bracket parser processing; +} + +:Line Classification Phase; +partition "Pure Algebraic Analysis" { + if (Line ends with "=?") then (yes) + :Classify as Solve Shortcut; + note right: x=? becomes solve(x) + elseif (Contains "=" and not comparison?) then (yes) + :Classify as Equation; + note right: ALL assignments become equations\nin pure algebraic mode + else (no) + :Classify as Expression; + endif +} + +:Pure Algebraic Evaluation; +partition "SymPy-First Processing" { + if (Equation type?) then (yes) + :Split on "=" sign; + :Create SymPy Eq() object; + :Add to equations list; + :Extract and track variables; + elseif (Solve shortcut?) then (yes) + :Extract variable name; + :Call _solve_variable_in_system(); + else (Expression) + :Evaluate with sympify() first; + :Maintain symbolic form; + :Apply simplify if configured; + endif +} + +:Smart Variable Resolution; +partition "Equation System Solving" { + if (Solve triggered?) then (yes) + :Find relevant equations for variable; + if (Multi-variable system?) then (yes) + :Solve complete system with SymPy; + :Extract specific variable; + else (simple case) + :Solve single variable directly; + endif + :Update symbol_table with result; + endif +} + +:Result Processing Phase; +partition "Output Formatting" { + :Generate symbolic result; + :Create numeric approximation if different; + :Format as single-line output; + note right: Concise format:\n"x = 5 ≈ 5.000000" +} + +:Output Synchronization Phase; +partition "GUI Updates" { + :Update output panel; + :Apply color coding for result type; + :Auto-resize input panel; +} + +if (Error occurred?) then (yes) + :Get help from registered helpers; + :Display error with context; +endif + +stop + +note bottom : **Pure Algebraic Principle**\nAll assignments become equations\nSymbolic evaluation prioritized\nNumeric approximation secondary + +@enduml +``` + + +```plantuml +@startuml Calculator_MAV_Architecture_Corrected +!define RECTANGLE class + +title Calculator MAV - Architecture with Pure Algebraic Engine + +package "Application Layer" { + [calc.py] as launcher + [main_calc_app.py] as gui +} + +package "Core Processing" { + [main_evaluation_puro.py] as pure_engine + [tl_bracket_parser.py] as parser + [type_registry.py] as registry + + note top of pure_engine : **Pure Algebraic Engine**\n• All assignments → equations\n• SymPy-first evaluation\n• Persistent equation system\n• Smart variable resolution +} + +package "Unused Components" #lightgray { + [main_evaluation.py] as hybrid_engine + note bottom of hybrid_engine : Not currently used\nin main application +} + +package "Type System" { + folder "custom_types/" { + [intbase_type.py] + [fourbytes_type.py] + [ip4_type.py] + [... more types] + } +} + +package "Support Components" { + [sympy_Base.py] as base + [class_base.py] as classbase + [tl_popup.py] as popup + [sympy_helper.py] as helper +} + +package "External Dependencies" { + [SymPy Library] as sympy + [Tkinter GUI] as tkinter +} + +' Active connections +launcher --> gui : "Initialize" +gui --> pure_engine : "evaluate_line()" +pure_engine --> parser : "process_expression()" +parser --> registry : "get_registered_tokenization_patterns()" +pure_engine --> registry : "get_registered_base_context()" +pure_engine --> sympy : "sympify(), solve(), Eq()" + +' Type system integration +registry --> intbase_type.py : "Auto-discover" +registry --> fourbytes_type.py : "Load patterns" +registry --> "... more types" : "Dynamic loading" + +' Inheritance +intbase_type.py --> base +fourbytes_type.py --> classbase +base --> sympy + +' Support +gui --> helper : "Contextual help" +gui --> popup : "Interactive results" + +' Unused connection (grayed out) +hybrid_engine -.-> sympy : "Not used" + +@enduml +``` + diff --git a/01-Documentation/Python/Scripts Python/Calc/Calc v0.3 Pure.md b/01-Documentation/Python/Scripts Python/Calc/Calc v0.3 Pure.md new file mode 100644 index 0000000..8d85f43 --- /dev/null +++ b/01-Documentation/Python/Scripts Python/Calc/Calc v0.3 Pure.md @@ -0,0 +1,165 @@ + +# MAV Calculator Application Logic Documentation + +## Overview + +The MAV Calculator is a hybrid Computer Algebra System (CAS) built around a pure algebraic engine that treats all assignments as equations. The application follows a clean pipeline from user input to result display, with sophisticated tokenization and symbolic computation capabilities. + +### The application has this main components: + +* Algebraic components using sympy engine with sympify, solve, evalf. This includes all the mathematical functions and the functions of sympy. +* Special objects called Types or classes under custom_types folder. + * This classes are automatically discovered at startup. + * every class has functions that some are for the interaction with other clases o with sympy. Other functions can be used directly by the user with parameters and returning the same object or other object. + * special tokenization patterns & substitution using data collected from classes under custom_types folder. + * every class has the Helper function to assist the user when on the line it is detected an error and the line starts with some patter + * every class has a descriptor of functions that can be used for this object to permit the autocomplete popup help the user when they press "." + +### Concepts + +* Types : Special classes under custom_types folder. That are automatically discovered at startup. +* Cycle: every time the user change the input panel start a cycle that ends when all lines are evaluated and produced an output +* Input panel: tk text area where the user can write or modify text. +* Output panel: read only tk area text correlated 1:1 to every line on the input panel . Every input line must correspond to only 1 line on the output. The output lines can have colors and binds to click for opening the plots or to show matrix or lists. +* Persistence: The app maintain the state of all configurated setup and dimension of the window and all the text on the input panel. + +## Application Architecture + +### Entry Point and Initialization + +The application starts through `calc.py`, which serves as a launcher with comprehensive logging and error handling. It initializes the main GUI application (`HybridCalculatorApp`) which in turn creates a `PureAlgebraicEngine` instance as its computational core. + +During initialization, the system performs auto-discovery of custom types from the `custom_types/` directory. Each type module can define tokenization patterns, helper functions, and computational behaviors. This creates a registry of available types and their associated transformation rules. + +## Calculation Cycle Flow + +### 1. Input Capture and Triggering + +The calculation cycle begins when the user types in the input panel. The GUI uses a debounced key release handler that triggers evaluation after a 300ms delay, preventing excessive computation during active typing. + +### 2. Line Processing Pipeline + +The engine processes all input lines sequentially, maintaining a clean context for each evaluation cycle: + +**Context Reset**: Before each evaluation cycle, the engine clears its internal context completely. This ensures that each modification to the input re-evaluates everything from scratch, maintaining consistency. + +**Line Classification**: Each line is categorized as: +- Empty or comment (ignored) +- Equation (contains `=` but not as comparison operator) +- Solve shortcut (pattern `variable=?`) +- Expression (everything else) + +### 3. Tokenization System + +The tokenization system operates through a distributed pattern-matching architecture: + +**Pattern Discovery**: During initialization, the system discovers tokenization patterns from all registered type classes. Each type can define multiple patterns with priorities and replacement functions. + +**Pattern Application**: Tokenization applies patterns in priority order (higher priority first). Each pattern consists of: +- A regular expression to match +- A replacement function that transforms the match +- Priority level for ordering +- Description for debugging + +**Example Transformations**: +- `192.168.1.1` becomes `FourBytes("192.168.1.1")` +- `16#FF` becomes `IntBase("FF", 16)` +- `2#1010` becomes `IntBase("1010", 2)` + +**Bracket Parser Integration**: After tokenization, the bracket parser processes any remaining bracket syntax transformations for legacy compatibility. ==Must be removed== + +Also every constructor of every Type must be instantiated using eval. For example if a line has "a = IP4(10.1.1.1)" the tokeniser first will translate to "a = IP4(FourBytes("10.1.1.1"))" then eval needs to instantiate the IP4 object so the a will be equal to an object IP4. +### 4. Algebraic Engine Processing + +The `PureAlgebraicEngine` implements a pure algebraic approach where all assignments become equations: + +**Equation Detection**: The engine distinguishes between: +- Simple assignments (`x = 5`) - creates both a variable assignment and an implicit equation- +- Complex equations (`x**2 + 2*x = 8`) - added directly to the equation system +- Solve shortcuts (`x=?`) - equivalent to `solve(x)` using the current equation system + +**Symbol Management**: Variables are automatically and must maintain the type as long as possible. Also if there are aritmetic use with Types we need to cast the result to the Type involved. For example if we have "IP4(10.1.1.1)+1" the result must be IP4 object. The engine maintains a symbol table and equation list that increase every line that persist until the end of the cycle. + +**Context Building**: For each evaluation, the engine builds a complete context including: +- Base mathematical functions (sin, cos, solve, etc.) +- Dynamically registered custom types +- Current variable assignments +- Helper functions from type registry + +### 5. Expression Evaluation Strategy + +The engine uses a hybrid evaluation strategy: + +**Symbolic Priority**: Expressions are first attempted through SymPy's `sympify` to maintain symbolic forms. This preserves exact mathematical representations. + +**Automatic Substitution**: +* The engine automatically substitutes known numerical values into symbolic expressions when possible, while preserving symbolic forms for unknown variables. +* ==Funtions + + +**Numerical Approximation**: When beneficial, the engine provides numerical approximations alongside symbolic results. The decision is based on whether the numerical form differs meaningfully from the symbolic representation. + +### 6. Result Processing and Display + +**Result Classification**: Each evaluation produces an `EvaluationResult` with: +- The computed result (symbolic or numerical) +- Result type classification +- Success/error status +- Optional numerical approximation +- Metadata about the evaluation + +**Interactive Elements**: The display system identifies results that benefit from interactivity: +- Large matrices become expandable views +- Plot commands create interactive matplotlib windows +- Long lists become scrollable displays +- Complex objects get detailed inspection windows + +**Tag-Based Formatting**: Results are displayed with color-coded tags based on their type and semantic meaning. The GUI applies appropriate formatting for equations, errors, symbolic expressions, and custom type outputs. + +## Type System Integration + +### Dynamic Type Loading + +The type system loads custom classes from the `custom_types/` directory at startup. Each type module can define: +- Class behaviors and arithmetic operations +- Tokenization patterns for automatic recognition +- Helper functions for contextual assistance +- Display and conversion methods + +### Inheritance Patterns + +Types inherit from either: +- `ClassBase` - for basic custom types +- `SympyClassBase` - for types requiring full SymPy integration + +This allows seamless interaction between custom types and the symbolic algebra system. + +### Method Discovery + +The system automatically discovers and exposes methods from custom types for autocompletion and help systems. This includes both instance methods and static helper functions. + +## Error Handling and Recovery + +The application implements comprehensive error handling at each stage: + +**Tokenization Errors**: Failed tokenization patterns are logged but don't halt processing, allowing partial transformations to proceed. + +**Evaluation Errors**: Helper from classes first, then if there is no match SymPy evaluation errors trigger fallback strategies, including symbol creation for undefined variables and alternative parsing approaches. + +**Display Errors**: Rendering failures fall back to string representations, ensuring results are always visible even if formatting fails. + +## Performance Characteristics + +**Lazy Evaluation**: Complex computations are deferred until needed, with caching of intermediate results where appropriate. + +**Incremental Processing**: Only changed content triggers re-evaluation, though the current implementation re-evaluates everything for consistency. + +**Memory Management**: The system manages symbol tables and equation lists efficiently, with cleanup mechanisms for large sessions. + +## Session Persistence + +The application maintains session continuity through: + +**History Persistence**: Input content is automatically saved and restored between sessions. +**Context Preservation**: Variable assignments and equations persist during the scope of every cycle. The context is added on every line and cleared at the begining of ever cycle. This means that every time the user changes the input panel the context is cleared. +**Settings Management**: UI state and preferences are preserved across application restarts. diff --git a/01-Documentation/Python/Scripts Python/Conda - Anaconda - miniconda.md b/01-Documentation/Python/Scripts Python/Conda - Anaconda - miniconda.md index 854a576..5709e0d 100644 --- a/01-Documentation/Python/Scripts Python/Conda - Anaconda - miniconda.md +++ b/01-Documentation/Python/Scripts Python/Conda - Anaconda - miniconda.md @@ -11,6 +11,13 @@ conda --version conda update conda ``` + +#### Instalar desde Requirements + +```bash +pip install -r requirements.txt +``` + ## Gestión de Entornos ### Crear un nuevo entorno diff --git a/01-Documentation/Routers/Mikrotik - Network Redes/Mikrotik - Comandos WIFI - Clientes de wlan y CAP.md b/01-Documentation/Routers/Mikrotik - Network Redes/Mikrotik - Comandos WIFI - Clientes de wlan y CAP.md new file mode 100644 index 0000000..d8148c9 --- /dev/null +++ b/01-Documentation/Routers/Mikrotik - Network Redes/Mikrotik - Comandos WIFI - Clientes de wlan y CAP.md @@ -0,0 +1,51 @@ + +### ===== CLIENTES LOCALES (interfaces wlan1/wlan2) ===== +#### Ver clientes conectados a wlan1 (2.4 GHz) +/interface wireless registration-table print where interface=wlan1 + +#### Ver clientes conectados a wlan2 (5 GHz) +/interface wireless registration-table print where interface=wlan2 + +#### Ver todos los clientes WiFi locales +/interface wireless registration-table print + +### ===== CLIENTES DE CAPSMAN ===== +#### Ver todos los clientes conectados a través de CAPsMAN +/caps-man registration-table print + +#### Ver clientes de CAP por configuración específica (2Ghz en tu caso) +/caps-man registration-table print where configuration=2Ghz + +#### Ver información detallada de clientes CAP +/caps-man registration-table print detail + +#### Ver solo información específica de clientes CAP +/caps-man registration-table print brief + +#### ===== VISTA COMPLETA (LOCALES + CAP) ===== + +```bash +# Script para ver todo junto +:put "=== CLIENTES LOCALES WLAN1 (2.4 GHz) ===" +/interface wireless registration-table print where interface=wlan1 +:put "" +:put "=== CLIENTES LOCALES WLAN2 (5 GHz) ===" +/interface wireless registration-table print where interface=wlan2 +:put "" +:put "=== CLIENTES CAPSMAN ===" +/caps-man registration-table print + +``` +#### ===== INFORMACIÓN DE LOS CAPS ===== +#### Ver los CAPs conectados al manager +/caps-man remote-cap print + +#### Ver estado de los CAPs +/caps-man remote-cap print detail + +#### ===== MONITOREO ===== +#### Monitorear clientes CAP en tiempo real +/caps-man registration-table print interval=5 + +#### Para ver información del DHCP y relacionar IPs con MACs +/ip dhcp-server lease print where active=yes \ No newline at end of file diff --git a/03-VM/44 - 98050 - Fiera/98050_Hardware.md b/03-VM/44 - 98050 - Fiera/98050_Hardware.md new file mode 100644 index 0000000..944796f --- /dev/null +++ b/03-VM/44 - 98050 - Fiera/98050_Hardware.md @@ -0,0 +1,36 @@ + +| Device Name | Device Address | Device Type | Order Number | Firmware Version | Module Name | Module Type | IO Input Start Address | IO Output Start Address | Total Input Bits | Total Output Bits | +|----------------|----------------|-----------------------|---------------------|------------------|------------------------------------|----------------------------------|------------------------|-------------------------|------------------|-------------------| +| BA 2xRJ45 | 10.1.30.11 | BA 2xRJ45 | 6ES7 193-6AR00-0AA0 | V0.0 | | | | | | | +| U30110-AxisX | 10.1.30.31 | C1250xMIPD 1S V3.0 | | | DO SERVO_1 | DO SERVO | 1100 | 1100 | 160 | 160 | +| U30210-AxisY | 10.1.30.32 | C1250xMIPD 1S V3.0 | | | DO SERVO_1 | DO SERVO | 1124 | 1124 | 160 | 160 | +| U30310 | 10.1.30.33 | MELSERVO MR-J4-TM | | | DO with manufacturer telegr. 102_1 | DO with manufacturer telegr. 102 | 1148 | 1148 | 384 | 384 | +| U30410 | 10.1.30.34 | MELSERVO MR-J4-TM | | | DO with manufacturer telegr. 102_1 | DO with manufacturer telegr. 102 | 1200 | 1200 | 384 | 384 | +| U30510 | 10.1.30.35 | MELSERVO MR-J4-TM | | | DO with manufacturer telegr. 102_1 | DO with manufacturer telegr. 102 | 1252 | 1252 | 384 | 384 | +| U30610 | 10.1.30.36 | MELSERVO MR-J4-TM | | | DO with manufacturer telegr. 102_1 | DO with manufacturer telegr. 102 | 1304 | 1304 | 384 | 384 | +| M30710 | 10.1.30.37 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 1356 | 1356 | 176 | 352 | +| M31010 | 10.1.30.40 | DFC2xA V1.0 | | | Module I/O (08 words) | Module I/O (08 words) | 1404 | 1404 | 128 | 128 | +| M31110 | 10.1.30.41 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 1424 | 1424 | 176 | 352 | +| M31210 | 10.1.30.42 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 1472 | 1472 | 176 | 352 | +| M31310 | 10.1.30.43 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 1520 | 1520 | 176 | 352 | +| M31410 | 10.1.30.44 | DFC2xA V1.0 | | | Module I/O (08 words) | Module I/O (08 words) | 1568 | 1568 | 128 | 128 | +| M31510 | 10.1.30.45 | DFC2xA V1.0 | | | Module I/O (08 words) | Module I/O (08 words) | 1588 | 1588 | 128 | 128 | +| M31610 | 10.1.30.46 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 1608 | 1608 | 176 | 352 | +| M31710 | 10.1.30.47 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 1656 | 1656 | 176 | 352 | +| M31810 | 10.1.30.48 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 1704 | 1704 | 176 | 352 | +| M31910 | 10.1.30.49 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 1752 | 1752 | 176 | 352 | +| U32810 | 10.1.30.58 | G120C PN | 6SL3210-1KE13-2AF2 | 4.7.13 | | | 1800 | 1800 | 0 | 0 | +| U32910 | 10.1.30.59 | G120C PN | 6SL3210-1KE13-2AF2 | 4.7.13 | | | 1824 | 1824 | 0 | 0 | +| U33010 | 10.1.30.60 | G120C PN | 6SL3210-1KE13-2AF2 | 4.7.13 | | | 1848 | 1848 | 0 | 0 | +| U33110 | 10.1.30.61 | G120C PN | 6SL3210-1KE13-2AF2 | 4.7.13 | | | 1872 | 1872 | 0 | 0 | +| U33210 | 10.1.30.62 | G120C PN | 6SL3210-1KE13-2AF2 | 4.7.13 | | | 1896 | 1896 | 0 | 0 | +| U33310 | 10.1.30.63 | G120C PN | 6SL3210-1KE13-2AF2 | 4.7.13 | | | 1920 | 1920 | 0 | 0 | +| U33410 | 10.1.30.64 | G120C PN | 6SL3210-1KE13-2AF2 | 4.7.13 | | | 1944 | 1944 | 0 | 0 | +| U33510 | 10.1.30.65 | G120C PN | 6SL3210-1KE13-2AF2 | 4.7.13 | | | 1968 | 1968 | 0 | 0 | +| U33610 | 10.1.30.66 | G120C PN | 6SL3210-1KE13-2AF2 | 4.7.13 | | | 1992 | 1992 | 0 | 0 | +| M34010 | 10.1.30.70 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 2016 | 2016 | 176 | 352 | +| M34110 | 10.1.30.71 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 2064 | 2064 | 176 | 352 | +| M34210 | 10.1.30.72 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 2112 | 2112 | 176 | 352 | +| M34310 | 10.1.30.73 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 2160 | 2160 | 176 | 352 | +| M34410 | 10.1.30.74 | DFC2xA V1.0 | | | Module I/O (08 words) | Module I/O (08 words) | 2208 | 2208 | 128 | 128 | +| E44010-Encoder | 10.1.30.170 | Multiturn 30 Bit V2.x | | | EO Encoder Multiturn V2.x_1 | | 2228 | 2228 | 128 | 32 | diff --git a/03-VM/44 - 98050 - Fiera/IO - Ips Nodes.md b/03-VM/44 - 98050 - Fiera/IO - Ips Nodes.md new file mode 100644 index 0000000..45a6049 --- /dev/null +++ b/03-VM/44 - 98050 - Fiera/IO - Ips Nodes.md @@ -0,0 +1,113 @@ + *** + + = 139 = 139 = 139 = 170 + +### IP network: 10.1.30.0/20 + +| | | | IP | Mask | Page | | | | | | +| ------------ | ------ | ----------------------------------- | :-: | ---- | ---- | -------------------------- | ----------- | ---------- | ---------- | --------------------------- | +| PLC | | CPU 1514SP T-2 PN | 11 | /12 | 405 | 6ES7 514-2VN03-0AB0 | | | | | +| HMI | | | 10 | /12 | | | | | | | +| | | | | | | | | | | | +| Divider | E44010 | Encoder Divider | 170 | /12 | 440 | | | | | | +| Divider | U30110 | Axis-X | 31 | | 301 | LinMot C1250-MI-XC-0S-000 | Isochronous | E100..E119 | A100..A119 | | +| Divider | U30210 | Axis-Y | 32 | | 302 | LinMot C1250-MI-XC-0S-000 | Isochronous | E120..E139 | A120..A139 | | +| Divider | U30310 | Timing Belt DX 1 | 33 | | 303 | Mitsubishi MR-J4-60TM4-PNT | | E256.. | | | +| Divider | U30410 | Timing Belt DX 2 | 34 | | 304 | Mitsubishi MR-J4-60TM4-PNT | | | | | +| Divider | U30510 | Timing Belt SX 1 | 35 | | 305 | Mitsubishi MR-J4-60TM4-PNT | | | | | +| Divider | U30610 | Timing Belt SX 2 | 36 | | 306 | Mitsubishi MR-J4-60TM4-PNT | | | | | +| Divider | M30710 | Dosser Format | 37 | | 307 | Minimotor | | | | | +| Divider | M31010 | Transport Inside | 40 | | 310 | SEW MGFAS-2 | | | | S31040,S31050,S31051,B31060 | +| Divider | M31110 | Combiner 1 DX | 41 | | 311 | Minimotor | | | | | +| Divider | M31210 | Combiner 2 SX | 42 | | 312 | Minimotor | | | | | +| Divider | M31310 | Format Change Outfeed | 43 | | 313 | Minimotor | | | | | +| Divider/Ring | M31410 | Transport Outfeed | 44 | | 314 | SEW MGFAS-2 | | | | B31440 | +| | | | | | | | | | | | +| | | | | | | | | | | | +| Table | M31510 | Infeed | 45 | | 315 | SEW MGFAS-2 | | | | B31540,B31550,S31550,S31560 | +| Table | M31610 | Dosser SX Infeed | 46 | | 316 | Minimotor | | | | | +| Table | M31610 | Dosser DX Infeed | 47 | | 317 | Minimotor | | | | | +| Table | M31810 | Dosser Format Infeed | 48 | | 318 | Minimotor | | | | | +| Table | M31910 | Channel Selection Infeed | 49 | | 319 | Minimotor | | | | | +| Table | U32810 | Canale 1 | 58 | | 328 | Siemens G120C | | | | | +| Table | U32910 | Canale 2 | 59 | | 329 | Siemens G120C | | | | | +| Table | U33010 | Canale 3 | 60 | | 330 | Siemens G120C | | | | | +| Table | U33110 | Canale 4 | 61 | | 331 | Siemens G120C | | | | | +| Table | U33210 | Canale 5 | 62 | | 332 | Siemens G120C | | | | | +| Table | U33310 | Canale 6 | 63 | | 333 | Siemens G120C | | | | | +| Table | U33410 | Canale 7 | 64 | | 334 | Siemens G120C | | | | | +| Table | U33510 | Canale 8 | 65 | | 335 | Siemens G120C | | | | | +| Table | U33610 | Canale 9 | 66 | | 336 | Siemens G120C | | | | | +| Table | M34010 | Channel Selection Outfeed | 70 | | 340 | Minimotor | | | | | +| Table | M34110 | Motore 1 Dosser Outfeed | 71 | | 341 | Minimotor | | | | | +| Table | M34210 | Motore 1 Dosser Outfeed | 72 | | 342 | Minimotor | | | | | +| Table | M34310 | Regolazione Largheza Dosser Outfeed | 73 | | 343 | Minimotor | | | | | +| Table/Ring | M34410 | Transport outfeed | 74 | | 344 | SEW MGFAS-2 | | | | | +| | | | | | | | | | | | +| Ring | E44520 | Gateway Outfeed Divider | 175 | | 445 | | | | | | +| Ring | E44620 | Gateway Infeed Divider | 176 | | 446 | | | | | | + + + + + + +### Photocells / Sensors +*** + +| | Tag | Description | Connected to | +| --- | ------ | ----------------------------------------- | ------------ | +| | S31040 | Sensore Di Asse Longitudinale | M31010 | +| | S31050 | Sensore de Asse Transversale | M31010 | +| | S31051 | Sensore de Reg Spaziatore Uscita Divisore | M31010 | +| | B31060 | Sicurezza uscita spaziatore | M31010 | +| | B31440 | Minimo Polmone Ingresso Tavolor | M31410 | +| | | | | +| | B31540 | Conteggio Ingresso Tavolo | M31510 | +| | B31550 | Sicurezza Tranlazione Ingresso | M31510 | +| | S31550 | Homing Dosser Infeed Table | M31510 | +| | S31560 | Sensore de homing Trasl. Dosser Infeed | M31510 | + + +### Emergency circuit +*** +* K14010 - p140 +* K15010 - p150 <- 20740/20750 - Divider doors - 8 doors +* K16010 - p160 - Table Infeed Doors - 2 doors +* K17010 - p170 - Table Outfeed Doors - 2 doors +* + + +### Motors: +*** + +| | | | | Inverter | | | +| ------- | ------ | -------------------------------------- | --- | -------- | ----- | ---- | +| Divider | M30160 | Axis-X | | U30110 | | | +| Divider | M30260 | Axis-Y | | | | | +| Divider | M30320 | Dosser 1 DX | 303 | U30310 | | | +| Divider | M30420 | Dosser 2 DX | 304 | U30410 | | | +| Divider | M30520 | Dosser 1 SX | 305 | U30510 | | | +| Divider | M30620 | Dosser 2 SX | 306 | U30610 | | | +| | | | | | | | +| Table | M30710 | Dosser Format | | 307 | | | +| Table | M31510 | Infeed | | 315 | | | +| Table | M31610 | Dosser SX Infeed | | 316 | | | +| Table | M31610 | Dosser DX Infeed | | 317 | | | +| Table | M31810 | Dosser Format Infeed | | 318 | | | +| Table | M31910 | Traslazione Smistatore Ingresso Tavolo | | 319 | | | +| Table | M32860 | Canale 1 | | 328 | .75kw | 1.9A | +| Table | M32960 | Canale 2 | | 329 | .75kw | 1.9A | +| Table | M33060 | Canale 3 | | 330 | .75kw | 1.9A | +| Table | M33160 | Canale 4 | | 331 | .75kw | 1.9A | +| Table | M33260 | Canale 5 | | 332 | .75kw | 1.9A | +| Table | M33360 | Canale 6 | | 333 | .75kw | 1.9A | +| Table | M33460 | Canale 7 | | 334 | .75kw | 1.9A | +| Table | M33560 | Canale 8 | | 335 | .75kw | 1.9A | +| Table | M33660 | Canale 9 | | 336 | .75kw | 1.9A | +| | | | | | | | + + + + + diff --git a/03-VM/44 - 98050 - Fiera/IO/Device IO Tags.md b/03-VM/44 - 98050 - Fiera/IO/Device IO Tags.md new file mode 100644 index 0000000..9fd3dde --- /dev/null +++ b/03-VM/44 - 98050 - Fiera/IO/Device IO Tags.md @@ -0,0 +1,55 @@ +## Inputs (Inputs) + +| Master Tag | Type | Data Type | +| -------------------------------- | ----- | --------- | +| zoneA24VDC | Input | Bool | +| zoneD24VDC | Input | Bool | +| thermicTrip | Input | Bool | +| safetyRelay | Input | Bool | +| eStop_ElectricalCabinet | Input | Bool | +| Divider_gateRight1 | Input | Bool | +| Divider_gateRight2 | Input | Bool | +| Divider_gateRight3 | Input | Bool | +| Divider_gateRight4 | Input | Bool | +| Divider_gateLeft1 | Input | Bool | +| Divider_gateLeft2 | Input | Bool | +| Divider_gateLeft3 | Input | Bool | +| Divider_gateLeft4 | Input | Bool | +| Divider_startButton | Input | Bool | +| Divider_stopButton | Input | Bool | +| Divider_automaticSelector | Input | Bool | +| Divider_manualForwardButton | Input | Bool | +| Divider_manualBackwardButton | Input | Bool | +| Divider_resetButton | Input | Bool | +| Divider_CountPhotocell | Input | Bool | +| Divider_TranslationSafetyHighPho | Input | Bool | +| Divider_TooFull1Line1 | Input | Bool | +| Divider_TooFull1Line2 | Input | Bool | +| eStop_PB1 | Input | Bool | +| Divider_TooFull1Line3 | Input | Bool | +| Divider_TooFull1Line4 | Input | Bool | +| Divider_TooFull1Line5 | Input | Bool | +| Divider_TooFull1Line6 | Input | Bool | +| Divider_encoderReferenceXAxis | Input | Bool | +| Divider_encoderReferenceYAxis | Input | Bool | +| Divider_TooFull2Line1 | Input | Bool | +| Divider_TooFull2Line2 | Input | Bool | +| Divider_TooFull2Line3 | Input | Bool | +| Divider_TooFull2Line4 | Input | Bool | +| Divider_TooFull2Line5 | Input | Bool | +| Divider_TooFull2Line6 | Input | Bool | + + +## Outputs (Outputs) + +| Master Tag | Type | Data Type | +| -------------------------- | ------ | --------- | +| Divider_runLamp | Output | Bool | +| Divider_resetLamp | Output | Bool | +| Divider_towerLampAutomatic | Output | Bool | +| Divider_towerLampManual | Output | Bool | +| Divider_towerLampAlarm | Output | Bool | +| Divider_acousticAlarm | Output | Bool | +| Divider_enableX | Output | Bool | +| Divider_enableY | Output | Bool | + diff --git a/03-VM/44 - 98050 - Fiera/IO/Mapping Divider.md b/03-VM/44 - 98050 - Fiera/IO/Mapping Divider.md new file mode 100644 index 0000000..e322c0c --- /dev/null +++ b/03-VM/44 - 98050 - Fiera/IO/Mapping Divider.md @@ -0,0 +1,57 @@ +# Mapeo Device IO Tags a PLC IO Tags - Sistema Divisor + +## Inputs Mapeados + +| Device Tag | Type | PLC Address | PLC Description | Confianza | +| -------------------------------- | ----- | ----------- | ----------------------------------- | --------- | +| Divider_automaticSelector | Input | E5.2 | MANUALE/AUTOMATICO | 95% | +| Divider_CountPhotocell | Input | E6.0 | CONTEGGIO DIVSORE FORMATO 1 | 80% | +| Divider_gateLeft1 | Input | E3.5 | DIVISORE MICRO PORTA 5 | 75% | +| Divider_gateLeft2 | Input | E3.6 | MICRO PORTA 6 DIVISORE | 75% | +| Divider_gateLeft3 | Input | E3.7 | DIVISORE MICRO 0PORTA7 | 75% | +| Divider_gateLeft4 | Input | E4.0 | PORTA 8 MICRO DIVSORE | 75% | +| Divider_gateRight1 | Input | E3.1 | DIVISORE MICRO 0PORTA1 | 80% | +| Divider_gateRight2 | Input | E3.2 | MICRO PORTA 2 DIVISORE | 80% | +| Divider_gateRight3 | Input | E3.3 | MICRO PORTA 3 DIVISORE | 80% | +| Divider_gateRight4 | Input | E3.4 | DIVISORE MICRO PORTA 4 | 80% | +| Divider_manualBackwardButton | Input | E5.4 | INDIETRO COMANDI MANUAL | 90% | +| Divider_manualForwardButton | Input | E5.3 | AVANTI MANUAL COMANDI | 90% | +| Divider_resetButton | Input | E5.6 | RESET ALLARMI | 90% | +| Divider_startButton | Input | E5.0 | MARCIA | 95% | +| Divider_stopButton | Input | E5.1 | ARRESTO | 95% | +| Divider_TranslationSafetyHighPho | Input | E6.2 | TRASLAZIONE SICUREZZA DIVISORE ALTA | 90% | +| eStop_ElectricalCabinet | Input | E2.0 | EMERGENZA GENERALE RELEE | 90% | +| eStop_PB1 | Input | E2.1 | PB1 PULSANTE EM. PUI SANTIERA | 95% | +| safetyRelay | Input | E3.0 | EMERGENZA CARTER DIVISORE RELE E | 85% | +| zoneA24VDC | Input | E1.4 | 24VDC QUADRO ALIMENTAZIONE INTERNO | 75% | + +## Outputs Mapeados + +| Device Tag | Type | PLC Address | PLC Description | Confianza | +| -------------------------- | ------ | ----------- | --------------------------------------- | --------- | +| Divider_acousticAlarm | Output | A0.3 | COL. LUMINOSA SIRENA | 90% | +| Divider_enableX | Output | A3.5 | ASSE ABILITAZIONE LONGITUDINALE DIVSORE | 90% | +| Divider_enableY | Output | A3.6 | TRASVERSALE ASSE ABILITAZIONE DIVISORE | 90% | +| Divider_resetLamp | Output | A0.7 | SEGN. RESET LUMINOSA ALLARMI | 90% | +| Divider_runLamp | Output | A0.5 | MARCIA SEGN. LUMINOSA | 90% | +| Divider_towerLampAlarm | Output | A0.2 | ALLARME COL. LUMINOSA | 95% | +| Divider_towerLampAutomatic | Output | A0.0 | COL. LUMINOSA MARCIAAUTOMATICA | 95% | +| Divider_towerLampManual | Output | A0.1 | SEGNALAZIONE COL. LUMINOSA | 75% | + +## Tags No Mapeados (Confianza <70%) + +**Inputs no encontrados:** + +- zoneD24VDC +- thermicTrip +- Divider_TooFull1Line1-6 +- Divider_TooFull2Line1-6 +- Divider_encoderReferenceXAxis +- Divider_encoderReferenceYAxis + +**Notas:** + +- Mapeo basado únicamente en descripciones disponibles +- Algunas puertas pueden estar intercambiadas entre Right/Left +- Se requiere verificación en campo para confirmar correspondencias exactas +- Tags con confianza <70% requieren información adicional para mapeo seguro \ No newline at end of file diff --git a/03-VM/44 - 98050 - Fiera/IO/PLC IO Tags.md b/03-VM/44 - 98050 - Fiera/IO/PLC IO Tags.md new file mode 100644 index 0000000..d95b02c --- /dev/null +++ b/03-VM/44 - 98050 - Fiera/IO/PLC IO Tags.md @@ -0,0 +1,140 @@ + +| Tag | IO | Description Italian | +| --------- | ---- | ----------------------------------------------------- | +| QF10410 | E0.0 | LINEA ALIMENTAZIONE MOVIGEAR | +| SERIETTAV | E0.7 | TERMICI TAVOLO ALIMENTAZIONE INVERTER | +| SERIETDIV | E0.1 | TERMICI AZIONAMENT ALIMENTAZIONE DIVISORE | +| QF31110 | E0.2 | ALIMENTAZIONE SPAZIATORE USCITA DIVISORE | +| QF27110 | E0.3 | ALIMENT. REG. LARGHEZZA USCITA SPAZIATORE DIVSORF | +| QF31610 | E0.4 | ALIMENTAZIONE TAVOLO SPAZIATORE INGRESSO | +| QF27130 | E0.5 | TAVOLO ALIMENT.REG. LARGHEZZA INGRESSO SPAZIATORE | +| QF31910 | E0.6 | ALIMENTAZIONE SMISTATORE TRASLAZIONE FINGRESSO TAVOLO | +| QF27170 | E1.0 | ALIMENTAZIONE CINGHIOLI REG. DIVISORE | +| QF34010 | E1.1 | SMISTATORE TRASLAZIONE ALIMENTAZIONE ATAVOLO USCITA | +| QF34110 | E1.2 | TAVOLO ALIMENTAZIONE SPAZIATORE USCITA | +| QF27150 | E1.3 | ALIMENT. REG. LARGHEZZA SPAZIATORE USCITA LTAVOLO | +| FA10910 | E1.4 | 24VDC QUADRO ALIMENTAZIONE INTERNO | +| FA10970 | E1.5 | ALIMENTAZIONE MICROMECCANICA MOTORIN | +| QF11030 | E1.6 | ALIMENTAZIONE ILLUMINAZIONE DIVISORE | +| AIRQE | E1.7 | CONDIZIONATORE ALLARME | +| K14010 | E2.0 | EMERGENZA GENERALE RELEE | +| SPARE1 | E2.3 | PULSANTE SCORTA EM. | +| EMSB14110 | E2.1 | PB1 PULSANTE EM. PUI SANTIERA | +| SPARE2 | E2.2 | PULSANTE SCORTA EM. | +| SPARE3 | E2.4 | PULSANTE SCORTA EM. | +| K15010 | E3.0 | EMERGENZA CARTER DIVISORE RELE E | +| S20010 | E3.1 | DIVISORE MICRO 0PORTA1 | +| S20110 | E3.2 | MICRO PORTA 2 DIVISORE | +| S20210 | E3.3 | MICRO PORTA 3 DIVISORE | +| S20310 | E3.4 | DIVISORE MICRO PORTA 4 | +| S20410 | E3.5 | DIVISORE MICRO PORTA 5 | +| S20510 | E3.6 | MICRO PORTA 6 DIVISORE | +| S20610 | E3.7 | DIVISORE MICRO 0PORTA7 | +| S20710 | E4.0 | PORTA 8 MICRO DIVSORE | +| S21010 | E4.6 | TAVOLO SMISTATORE MICRO USCITA PORTA 1 | +| S21110 | E4.7 | TAVOLO SMISTATORE MICRO PORTA 2 USCITA | +| K16010 | E4.2 | RELE CARTER SMISTATORE TAVOLO N INGRESSO MULTIMA | +| S20810 | E4.3 | TAVOLO SMISTATORE INGRESSO MICRO PORTA 1 | +| S20910 | E4.4 | SMISTATORE TAVOLO MICRO INGRESSO PORTA 2 | +| K17010 | E4.5 | USCITA RELE CARTER SMISTATORE TAVOLO MULTIMA | +| SB50510 | E5.0 | MARCIA | +| SB50520 | E5.1 | ARRESTO | +| SA50530 | E5.2 | MANUALE/AUTOMATICO | +| SB50560 | E5.5 | RICHIESTA ACCESSO | +| SB50570 | E5.6 | RESET ALLARMI | +| SA50540 | E5.3 | AVANTI MANUAL COMANDI | +| SA50540 | E5.4 | INDIETRO COMANDI MANUAL | +| B50610 | E6.0 | CONTEGGIO DIVSORE FORMATO 1 | +| B50620 | E6.1 | CONTEGGIO DIVISORE FORMATO 2 | +| B50630 | E6.2 | TRASLAZIONE SICUREZZA DIVISORE ALTA | +| B50640 | E6.3 | TRASLAZIONE BASSA DIVISORE SICURE77A | +| HL53010 | A0.0 | COL. LUMINOSA MARCIAAUTOMATICA | +| HL53020 | A0.1 | SEGNALAZIONE COL. LUMINOSA | +| HL53030 | A0.2 | ALLARME COL. LUMINOSA | +| HA53040 | A0.3 | COL. LUMINOSA SIRENA | +| SH50510 | A0.5 | MARCIA SEGN. LUMINOSA | +| SH50560 | A0.6 | SEGN. LUMINOSA RICHIESTAACCESSO | +| SH50570 | A0.7 | SEGN. RESET LUMINOSA ALLARMI | +| S20010 | A1.0 | PORTA1DIVISORE MICRO ABILITAZIONE | +| S20110 | A1.1 | MICRO ABILITAZIONE PORTA 2 DIVISORE | +| S20210 | A1.2 | MICRO ABILITAZIONE PORTA 3 DIVSORE | +| S20310 | A1.3 | MICRO ABILITAZIONE PORTA 4 DIVISORE | +| S20410 | A1.4 | MICRO ABILITAZIONE PORTA 5 DIVSORE | +| S20510 | A1.5 | MICRO ABILITAZIONE PORTA 6 DIMSORE | +| S20610 | A1.6 | MICRO ABILITAZIONE PORTA 7 DIVSORE | +| S20710 | A1.7 | MICRO ABILITAZIONE PORTA 8 DIVISORE | +| KA53210 | A2.0 | RELE EMERGENZA GENERALE RESET R | +| KA53220 | A2.1 | CARTER DIVISORE RESET RELE | +| KA53230 | A2.2 | TAVOLO SMISTATORE CARTER INGRESSO RESET RELE | +| KA53240 | A2.3 | TAVOLO RELE CARTER SMISTATORE USCITA RESETF | +| KA53250 | A2.4 | ABILTAZIONE DIVISORE GATEWAY USCITA E 1GRUPPO | +| KA53260 | A2.5 | GATEWAY USCITA ABILTAZIONE DIVISORE E 2GRUPPO | +| KA53270 | A2.6 | GATEWAYUSCITA ADIMSORE ABILITAZIONE 3GRUPPO | +| KA53280 | A2.7 | DIVSORE GATEWAY USCITA E 4GRUPPO ABILITAZIONE | +| KA53310 | A3.0 | GATEWAY INGRESSO DIVISORE ABILITAZIONE E 1 GRUPPO | +| KA53320 | A3.1 | GATEWAY INGRESSO ABILITAZIONE DIVISORE E 2 GRUPPO | +| KA53330 | A3.2 | GATEWAY INGRESSO DIVISORE ABILITAZIONE 3 GRUPPO | +| KA53340 | A3.3 | DIVISORE GATEWAY INGRESSO ABILITAZIONE 4GRUPPO | +| KA53350 | A3.4 | DIVISORE ABILTAZIONE LLUMINAZIONE | +| U30110EN | A3.5 | ASSE ABILITAZIONE LONGITUDINALE DIVSORE | +| U30210EN | A3.6 | TRASVERSALE ASSE ABILITAZIONE DIVISORE | +| M31910HOM | A3.7 | TAVOLO AZZERAMENTO EINGRESSO SMISTATORE TRASLAZIONE | +| M34010HOM | A4.0 | AZZERAMENTOTRASLAZIONE SMISTATORE USCITA TAVOLO | + + + +| Network | Type | Address | Device Name | Sub-Device | OrderNo | Type | IO Type | IO Address | Number of Bits | +| ----------------- | ----------------- | ----------- | -------------- | ---------------------------------- | ------------------- | -------------------------------- | ------- | --------------- | -------------- | +| PLC Local Modules | Local I/O | Local | PLC A40510 | A41110 | 6ES7 131-6BF01-0BA0 | DI 8x24VDC ST | Input | `EW 0..0` | 8 | +| PLC Local Modules | Local I/O | Local | PLC A40510 | A41111 | 6ES7 131-6BF01-0BA0 | DI 8x24VDC ST | Input | `EW 1..1` | 8 | +| PLC Local Modules | Local I/O | Local | PLC A40510 | A41120 | 6ES7 131-6BF01-0BA0 | DI 8x24VDC ST | Input | `EW 2..2` | 8 | +| PLC Local Modules | Local I/O | Local | PLC A40510 | A41121 | 6ES7 131-6BF01-0BA0 | DI 8x24VDC ST | Input | `EW 3..3` | 8 | +| PLC Local Modules | Local I/O | Local | PLC A40510 | A41130 | 6ES7 132-6BF01-0BA0 | DQ 8x24VDC/0.5A ST | Output | `AW 0..0` | 8 | +| PLC Local Modules | Local I/O | Local | PLC A40510 | A41131 | 6ES7 132-6BF01-0BA0 | DQ 8x24VDC/0.5A ST | Output | `AW 1..1` | 8 | +| PLC Local Modules | Local I/O | Local | PLC A40510 | A41140 | 6ES7 132-6BF01-0BA0 | DQ 8x24VDC/0.5A ST | Output | `AW 2..2` | 8 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.31 | U30110-AxisX | DO SERVO_1 | N/A | DO SERVO | Input | `EW 1100..1119` | 160 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.31 | U30110-AxisX | DO SERVO_1 | N/A | DO SERVO | Output | `AW 1100..1119` | 160 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.32 | U30210-AxisY | DO SERVO_1 | N/A | DO SERVO | Input | `EW 1124..1143` | 160 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.32 | U30210-AxisY | DO SERVO_1 | N/A | DO SERVO | Output | `AW 1124..1143` | 160 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.33 | U30310 | DO with manufacturer telegr. 102_1 | N/A | DO with manufacturer telegr. 102 | Input | `EW 1148..1195` | 384 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.33 | U30310 | DO with manufacturer telegr. 102_1 | N/A | DO with manufacturer telegr. 102 | Output | `AW 1148..1195` | 384 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.34 | U30410 | DO with manufacturer telegr. 102_1 | N/A | DO with manufacturer telegr. 102 | Input | `EW 1200..1247` | 384 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.34 | U30410 | DO with manufacturer telegr. 102_1 | N/A | DO with manufacturer telegr. 102 | Output | `AW 1200..1247` | 384 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.35 | U30510 | DO with manufacturer telegr. 102_1 | N/A | DO with manufacturer telegr. 102 | Input | `EW 1252..1299` | 384 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.35 | U30510 | DO with manufacturer telegr. 102_1 | N/A | DO with manufacturer telegr. 102 | Output | `AW 1252..1299` | 384 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.36 | U30610 | DO with manufacturer telegr. 102_1 | N/A | DO with manufacturer telegr. 102 | Input | `EW 1304..1351` | 384 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.36 | U30610 | DO with manufacturer telegr. 102_1 | N/A | DO with manufacturer telegr. 102 | Output | `AW 1304..1351` | 384 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.37 | M30710 | DS402_Extend-A | N/A | N/A | Input | `EW 1356..1377` | 176 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.37 | M30710 | DS402_Extend-A | N/A | N/A | Output | `AW 1356..1399` | 352 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.40 | M31010 | Module I/O (08 words) | N/A | Module I/O (08 words) | Input | `EW 1404..1419` | 128 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.40 | M31010 | Module I/O (08 words) | N/A | Module I/O (08 words) | Output | `AW 1404..1419` | 128 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.41 | M31110 | DS402_Extend-A | N/A | N/A | Input | `EW 1424..1445` | 176 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.41 | M31110 | DS402_Extend-A | N/A | N/A | Output | `AW 1424..1467` | 352 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.42 | M31210 | DS402_Extend-A | N/A | N/A | Input | `EW 1472..1493` | 176 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.42 | M31210 | DS402_Extend-A | N/A | N/A | Output | `AW 1472..1515` | 352 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.43 | M31310 | DS402_Extend-A | N/A | N/A | Input | `EW 1520..1541` | 176 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.43 | M31310 | DS402_Extend-A | N/A | N/A | Output | `AW 1520..1563` | 352 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.44 | M31410 | Module I/O (08 words) | N/A | Module I/O (08 words) | Input | `EW 1568..1583` | 128 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.44 | M31410 | Module I/O (08 words) | N/A | Module I/O (08 words) | Output | `AW 1568..1583` | 128 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.45 | M31510 | Module I/O (08 words) | N/A | Module I/O (08 words) | Input | `EW 1588..1603` | 128 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.45 | M31510 | Module I/O (08 words) | N/A | Module I/O (08 words) | Output | `AW 1588..1603` | 128 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.46 | M31610 | DS402_Extend-A | N/A | N/A | Input | `EW 1608..1629` | 176 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.46 | M31610 | DS402_Extend-A | N/A | N/A | Output | `AW 1608..1651` | 352 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.47 | M31710 | DS402_Extend-A | N/A | N/A | Input | `EW 1656..1677` | 176 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.47 | M31710 | DS402_Extend-A | N/A | N/A | Output | `AW 1656..1699` | 352 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.48 | M31810 | DS402_Extend-A | N/A | N/A | Input | `EW 1704..1725` | 176 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.48 | M31810 | DS402_Extend-A | N/A | N/A | Output | `AW 1704..1747` | 352 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.49 | M31910 | DS402_Extend-A | N/A | N/A | Input | `EW 1752..1773` | 176 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.49 | M31910 | DS402_Extend-A | N/A | N/A | Output | `AW 1752..1795` | 352 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.70 | M34010 | DS402_Extend-A | N/A | N/A | Input | `EW 2016..2037` | 176 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.70 | M34010 | DS402_Extend-A | N/A | N/A | Output | `AW 2016..2059` | 352 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.71 | M34110 | DS402_Extend-A | N/A | N/A | Input | `EW 2064..2085` | 176 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.71 | M34110 | DS402_Extend-A | N/A | N/A | Output | `AW 2064..2107` | 352 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.72 | M34210 | DS402_Extend-A | N/A | N/A | Input | `EW 2112..2133` | 176 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.72 | M34210 | DS402_Extend-A | N/A | N/A | Output | `AW 2112..2155` | 352 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.73 | M34310 | DS402_Extend-A | N/A | N/A | Input | `EW 2160..2181` | 176 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.73 | M34310 | DS402_Extend-A | N/A | N/A | Output | `AW 2160..2203` | 352 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.74 | M34410 | Module I/O (08 words) | N/A | Module I/O (08 words) | Input | `EW 2208..2223` | 128 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.74 | M34410 | Module I/O (08 words) | N/A | Module I/O (08 words) | Output | `AW 2208..2223` | 128 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.170 | E44010-Encoder | EO Encoder Multiturn V2.x_1 | N/A | N/A | Input | `EW 2228..2243` | 128 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.170 | E44010-Encoder | EO Encoder Multiturn V2.x_1 | N/A | N/A | Output | `AW 2228..2231` | 32 | \ No newline at end of file diff --git a/03-VM/44 - 98050 - Fiera/Layout - Anello-Ring.md b/03-VM/44 - 98050 - Fiera/Layout - Anello-Ring.md new file mode 100644 index 0000000..eaaa0f9 --- /dev/null +++ b/03-VM/44 - 98050 - Fiera/Layout - Anello-Ring.md @@ -0,0 +1,441 @@ +--- + +excalidraw-plugin: parsed +tags: [excalidraw] + +--- +==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== You can decompress Drawing data with the command palette: 'Decompress current Excalidraw file'. For more info check in plugin settings under 'Saving' + + +# Excalidraw Data + +## Text Elements +M316 ^QGpBOsPR + +M317 ^XwY6YBxg + +M315 ^5uw93rn8 + +M318 ^R1xTprpX + +B31540 ^1yPovzco + +B31550 ^orOOU9K9 + +S31550 ^LL1ixc09 + +M328 ^Wu6lcYjc + +M329 ^udjVHVza + +M330 ^bTQ5oKGd + +M331 ^I8y1IZ0k + +M336 ^ZJVjURen + +M335 ^vqG6Eh7e + +M334 ^RLFXNXj2 + +M333 ^oXfahoxt + +M332 ^xITnc4cQ + +B34440 ^A6MjGh8q + +S34460 ^jqFuZsCh + +M340 ^AQXPJwvv + +M341 ^3KyRdxVs + +M342 ^RYTbgj1D + +B34450 ^qliZ1nIA + +M343 ^wBu9Je9J + +B34451 ^RzrQ6N17 + +M344 ^yOPtEZnu + +M311 ^7VW2eTrq + +M312 ^E1cDenf1 + +M310 ^LXZs5H0T + +M313 ^4IL2QVlN + +B31060 ^Zx5y3RpD + +M314 ^z962gh5J + +B31440 ^iZOsgyG1 + +M319 ^6AK1KY2Z + +M307 ^KP4NXEjV + +M304 ^W93X5RUo + +M306 ^dsWbRb1W + +C1 ^M1uAvTX8 + +C9 ^Jg2LBtOi + +C5 ^rlSM1POS + +S34470 ^SpmLp1Cq + +S31051 ^eoUd3YsC + +S34461 ^heswS0PC + +S34460 ^bwPm9Dz6 + +## Embedded Files +cc2e866f5ab74b824891b9e6e5d79ed0c73485aa: [[Layout-Model.png]] + +%% +## Drawing +```compressed-json +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 +``` +%% \ No newline at end of file diff --git a/03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo.md b/03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.0 - Ita.md similarity index 99% rename from 03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo.md rename to 03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.0 - Ita.md index 95009ff..bebf39f 100644 --- a/03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo.md +++ b/03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.0 - Ita.md @@ -10,7 +10,7 @@ Il progetto coinvolge un trasporto di bottiglie ad anello con i seguenti element * Per effettuare il cambio di formato, il tavolo ha 2 motori di cambio formato delle guide che aprono o chiudono le sponde e i dosatori. * Per selezionare il canale di carico o scarico si utilizzano 2 motori minimotori, uno all'ingresso e l'altro all'uscita che permettono di modificare l'angolo delle sponde. Questo angolo deve essere caricato come parametro e ci sono 9 canali possibili. - + ### Tavolo di accumulo *** L'obiettivo del tavolo di accumulo è di immagazzinare il formato che non si sta usando. diff --git a/03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.1 - Esp.md b/03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.1 - Esp.md new file mode 100644 index 0000000..13f7a3d --- /dev/null +++ b/03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.1 - Esp.md @@ -0,0 +1,68 @@ +*** + +El proyecto involucra un transporte de botellas en anillo con los siguientes elementos: +* Anillo compuesto M314, M315 y M344 + * Transporte con guías motorizadas para cambio de formato +* Divider de alta velocidad + * Cambio formato Guías M307 - Homing S34470 +* Combinador para unificar los canales a la salida del divider. + * Cambio formato Combinador M313 - S31051 + * Logica de salida B31060 +* Mesa de acumulación que permite almacenar el formato no utilizado. + * La mesa de acumulación cuenta con 4 filas a la derecha y 4 a la izquierda además de la fila central usada solo como bypass. + * Las guias de traslacion que permiten mover las botellas desde los canales exteriores a el canal central necesita no tiene traccion propia y como pasa por los canales centrales esto obliga a que para cargar o descargar los canales exteriores los transportes de los canales interiores tengan que estar en marcha. Tambien restringe por este motivo a que los canales exteriores se cargan primero y se descargan ultimo ya que necesitamos mover libremente los canales internos a medida que cargamos o descargamos los canales mas exteriores. + * Si definimos como canal(centro) , centro + n es formato derecho, contro - n es formato izquierdo y centro es el canal de bypass, luego para cargar el formato derecho debemos y tenienedo como Max(n) la cantidad maxima de canales a la derecha o izquierda entonces primero debemos cargar canal n=centro+Max(n) y vamos decrementando n mientras sea mayor a centro. Mientras cargamos el canal n los canales desde centro hasta n se ponen en marcha. + * Para la descarga se hace el procedimiento inverso descargando desde los canales mas cercanos a centro hacia el canal Max(n) + * Para el formato izquierdo se invierte el signo al usar n=centro-Max(n). + * Para la mesa de acumulacion que estamos trabajando Max(n) = 4, los canales estan definidos desde 1 a 9 y el canal central = 5. + * La mesa puede almacenar 2 formatos, uno a la derecha y el otro a la izquierda. Cuando se requiere un cambio de formato se carga el formato en curso y se descarga el nuevo formato. Una vez descargado el formato en curso se activa el modo bypass. + * Cambio formato: + * Dosadores de Ingreso: M318 - Homing S31550 + * Dosadores de Salida: M343 - Homing S34461 + * Para seleccionar el canal de carga o descarga se utilizan 2 motores minimotores, uno a la entrada y el otro a la salida que permiten modificar el ángulo de las bordes. Este ángulo debe ser cargado como parámetro y hay 9 canales posibles. + +La secuencia partiendo de la mesa de acumulacion es: +* Mesa de acumulacion: + * Dosadores de ingreso M316 y M317. Cambio de formato con M318 + +### Mesa de acumulación +*** +El objetivo de la mesa de acumulación es almacenar el formato que no se está usando. + +El trabajo tendrá los siguientes objetivos: +- Lógica de la mesa de carga, descarga y bypass: gestión del cambio de formato para el minimotor. Por simplicidad, la mesa está dividida en derecha/izquierda y los formatos pueden estar solo en un lado. +- Lógica de los motores en anillo y lógica estándar VM. +- El HMI no será desarrollado en esta fase, me has dicho que se hace por separado, pero se creará un simulador para nosotros. +- Gestión de las recetas en el HMI: inicialmente, se seguirá el plan acordado. Se crearán filas en el recetario para cada motor en anillo y para los datos de la mesa. El cambio de formato de la mesa comenzará solo después de verificar que no haya más botellas en el anillo y que el modo carga esté activo, con el divider y el anillo en automático. +- Velocidad: + - Velocidad de bypass: depende del divider y del anillo, no limitada por la mesa. + - Velocidad de carga/descarga: debe ser lenta para cerrar los huecos entre los cambios de canal de la mesa. Durante la carga, la descarga está detenida y viceversa. + +Por ahora, preveo la mesa como un Dispositivo con los siguientes señales de entrada/salida: + +#### Señales de Entrada (Input) +*** + +| Señal | Descripción | Función | +| ------- | ----------------------------------------------- | ---------------------------------------------------------- | +| i1 | Salida anillo solicitada producto | Salida libre | +| i2 | Solicitud de carga | Para cambio de formato | +| i3 | Anillo vacío + divider en auto + anillo en auto | Para generar consentimiento a cambio de formato | +| i4 | Velocidad motor bypass solicitada | Velocidad deseada para bypass | +| i5 | Cambio de formato ejecutado desde el HMI | Comando de ejecución | +| i6 | Habilitación de descarga | Inhibe descarga automática una vez completada la carga | + +#### Señales de Salida (Output) +*** + +| Señal | Descripción | Función | +| ------- | -------------------------- | ---------------------------------------------------- | +| o1 | Entrada solicita producto | Mesa lista y en marcha | +| o2 | Cambio de formato permitido | Finalizado el carga y anillo vacío | +| o3 | Velocidad motor salida | Para interfaz con 1 motor de salida de la mesa en el anillo | +| o4 | Mesa en Bypass | Estado de bypass activo | + +Cambio de estados en la mesa: +- La carga comienza por solicitud externa i2 (de operador o temporizador). +- La descarga ocurre automáticamente después de un cambio de formato (i5). La mesa se descarga completamente antes de iniciar el modo bypass. +- Una vez descargada, se activa el modo bypass. (o4) \ No newline at end of file diff --git a/03-VM/44 - 98050 - Fiera/adjuntos/Layout-Model.png b/03-VM/44 - 98050 - Fiera/adjuntos/Layout-Model.png new file mode 100644 index 0000000..195cf58 Binary files /dev/null and b/03-VM/44 - 98050 - Fiera/adjuntos/Layout-Model.png differ diff --git a/03-VM/9..... MASTER Transport/Standard Transport/IPs & Address - Master - Vetromeccanica.md b/03-VM/9..... MASTER Transport/Standard Transport/IPs & Address - Master - Vetromeccanica.md index 0db4289..daa396f 100644 --- a/03-VM/9..... MASTER Transport/Standard Transport/IPs & Address - Master - Vetromeccanica.md +++ b/03-VM/9..... MASTER Transport/Standard Transport/IPs & Address - Master - Vetromeccanica.md @@ -1,5 +1,5 @@ -[Elenco I-O Standard_V07.xlsx](file:///C:%5CTrabajo%5CVM%5C07%20-%20MASTER%20Transport%5CReporte%5CElenco%20I-O%20Standard_V07.xlsx) +[Elenco I-O Standard_V07.xlsx](file:///D:%5CTrabajo%5CVM%5C07%20-%20MASTER%20Transport%5CReporte%5CElenco%20I-O%20Standard_V07.xlsx) | Componente | IP Standard | Commento | Optional |