{
  "schema": "azeforge.grammar/v1",
  "schemaVersion": 1,
  "tool": {
    "name": "azeforge",
    "version": "0.6.3"
  },
  "azemarkVersions": [
    2
  ],
  "document": {
    "frontMatter": {
      "delimiters": [
        "---"
      ],
      "fields": [
        {
          "key": "azemark",
          "valueType": "integer",
          "required": true
        },
        {
          "key": "author",
          "valueType": "string-list",
          "required": false
        },
        {
          "key": "title",
          "valueType": "text",
          "required": false
        },
        {
          "key": "theme",
          "valueType": "text",
          "required": false
        },
        {
          "key": "outputs",
          "valueType": "string-list",
          "required": false,
          "values": [
            "html",
            "svg",
            "png",
            "pdf"
          ]
        },
        {
          "key": "defaults",
          "valueType": "record",
          "required": false
        },
        {
          "key": "citation-style",
          "valueType": "enum",
          "required": false,
          "values": [
            "numeric",
            "author-year"
          ]
        }
      ]
    },
    "fences": {
      "outer": "::::",
      "nested": "::",
      "separator": "----",
      "indent": 2
    },
    "comments": {
      "prefix": "//"
    },
    "identifier": {
      "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$",
      "scope": "document"
    }
  },
  "directives": [
    {
      "type": "equation",
      "title": "Equation",
      "pluginVersion": "2.0.0",
      "namespace": "azeforge.equation",
      "bodySyntax": {
        "id": "azeforge.native-equation/v1",
        "version": "1.0.0"
      },
      "header": {
        "separator": "----",
        "fields": [
          {
            "key": "id",
            "valueType": "identifier",
            "required": false
          },
          {
            "key": "number",
            "valueType": "boolean",
            "required": false
          },
          {
            "key": "align",
            "valueType": "enum",
            "required": false,
            "values": [
              "left",
              "center",
              "right"
            ]
          },
          {
            "key": "syntax",
            "valueType": "enum",
            "required": false,
            "values": [
              "readable",
              "latex"
            ]
          }
        ]
      },
      "body": {
        "form": "scalar-lines",
        "fields": [
          {
            "key": "expression",
            "valueType": "expression",
            "required": true
          }
        ],
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "$id": "azeforge.equation/grammar/v1",
          "type": "object",
          "additionalProperties": false,
          "required": [
            "expression"
          ],
          "properties": {
            "expression": {
              "type": "string"
            }
          }
        }
      },
      "limits": {
        "maxSourceChars": 4000,
        "maxTexChars": 4000
      }
    },
    {
      "type": "derivation",
      "title": "Derivation",
      "pluginVersion": "1.0.0",
      "namespace": "azeforge.derivation",
      "bodySyntax": {
        "id": "azeforge.derivation/v1",
        "version": "1.0.0"
      },
      "header": {
        "separator": "----",
        "fields": [
          {
            "key": "id",
            "valueType": "identifier",
            "required": false
          },
          {
            "key": "number",
            "valueType": "boolean",
            "required": false
          },
          {
            "key": "align",
            "valueType": "enum",
            "required": false,
            "values": [
              "left",
              "center",
              "right"
            ]
          }
        ]
      },
      "body": {
        "form": "scalar-lines",
        "fields": [],
        "records": [
          {
            "kind": "expression",
            "fields": [
              {
                "key": "expression",
                "valueType": "expression",
                "required": true
              },
              {
                "key": "annotation",
                "valueType": "prose",
                "required": false
              }
            ]
          }
        ],
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "$id": "azeforge.derivation/grammar/v1",
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "expression"
                ],
                "properties": {
                  "expression": {
                    "type": "string"
                  },
                  "annotation": {
                    "type": "string"
                  }
                }
              }
            ]
          }
        }
      },
      "limits": {
        "maxSourceChars": 4000,
        "maxTexChars": 4000
      }
    },
    {
      "type": "callout",
      "title": "Callout",
      "pluginVersion": "1.0.0",
      "namespace": "azeforge.callout",
      "bodySyntax": {
        "id": "azeforge.callout-markdown/v1",
        "version": "1.0.0"
      },
      "header": {
        "separator": "----",
        "fields": [
          {
            "key": "id",
            "valueType": "identifier",
            "required": false
          },
          {
            "key": "variant",
            "valueType": "enum",
            "required": false,
            "values": [
              "note",
              "tip",
              "important",
              "warning",
              "caution"
            ]
          },
          {
            "key": "title",
            "valueType": "prose",
            "required": false
          }
        ]
      },
      "body": {
        "form": "keyed-sections",
        "fields": [
          {
            "key": "children",
            "valueType": "record-list",
            "required": false
          }
        ],
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "$id": "azeforge.callout/grammar/v1",
          "type": "object",
          "additionalProperties": false,
          "required": [],
          "properties": {
            "children": {
              "type": "array"
            }
          }
        }
      },
      "limits": {}
    },
    {
      "type": "mermaid",
      "title": "Mermaid",
      "pluginVersion": "1.0.0",
      "namespace": "azeforge.mermaid",
      "bodySyntax": {
        "id": "azeforge.mermaid/v1",
        "version": "1.0.0"
      },
      "header": {
        "separator": "----",
        "fields": [
          {
            "key": "id",
            "valueType": "identifier",
            "required": false
          },
          {
            "key": "title",
            "valueType": "text",
            "required": false
          },
          {
            "key": "description",
            "valueType": "text",
            "required": false
          }
        ]
      },
      "body": {
        "form": "scalar-lines",
        "fields": [
          {
            "key": "source",
            "valueType": "text",
            "required": true
          },
          {
            "key": "diagramType",
            "valueType": "enum",
            "required": false,
            "values": [
              "flowchart",
              "graph",
              "sequencediagram",
              "classdiagram",
              "statediagram",
              "statediagram-v2",
              "erdiagram",
              "pie",
              "gantt",
              "journey",
              "mindmap"
            ]
          }
        ],
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "$id": "azeforge.mermaid/grammar/v1",
          "type": "object",
          "additionalProperties": false,
          "required": [
            "source"
          ],
          "properties": {
            "source": {
              "type": "string"
            },
            "diagramType": {
              "type": "string",
              "enum": [
                "flowchart",
                "graph",
                "sequencediagram",
                "classdiagram",
                "statediagram",
                "statediagram-v2",
                "erdiagram",
                "pie",
                "gantt",
                "journey",
                "mindmap"
              ]
            }
          }
        }
      },
      "limits": {
        "maxSourceChars": 8000,
        "maxTextChars": 8000
      }
    },
    {
      "type": "tex",
      "title": "Curated TeX figure",
      "pluginVersion": "1.0.0",
      "namespace": "azeforge.tex",
      "bodySyntax": {
        "id": "azeforge.tex/v1",
        "version": "1.0.0"
      },
      "header": {
        "separator": "----",
        "fields": [
          {
            "key": "id",
            "valueType": "identifier",
            "required": false
          },
          {
            "key": "title",
            "valueType": "text",
            "required": true
          },
          {
            "key": "description",
            "valueType": "text",
            "required": true
          },
          {
            "key": "profile",
            "valueType": "enum",
            "required": true,
            "values": [
              "circuitikz",
              "tikz",
              "pgfplots",
              "chemfig",
              "tikz-cd"
            ]
          }
        ]
      },
      "body": {
        "form": "scalar-lines",
        "fields": [
          {
            "key": "body",
            "valueType": "text",
            "required": true
          }
        ],
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "$id": "azeforge.tex/grammar/v1",
          "type": "object",
          "additionalProperties": false,
          "required": [
            "body"
          ],
          "properties": {
            "body": {
              "type": "string"
            }
          }
        }
      },
      "limits": {
        "maxSourceChars": 50000
      }
    },
    {
      "type": "table",
      "title": "Typed Table",
      "pluginVersion": "2.0.0",
      "namespace": "azeforge.table",
      "bodySyntax": {
        "id": "azeforge.typed-table/v2",
        "version": "2.0.0"
      },
      "header": {
        "separator": "----",
        "fields": [
          {
            "key": "id",
            "valueType": "identifier",
            "required": false
          },
          {
            "key": "number",
            "valueType": "boolean",
            "required": false
          },
          {
            "key": "caption",
            "valueType": "prose",
            "required": false
          }
        ]
      },
      "body": {
        "form": "keyed-sections",
        "fields": [
          {
            "key": "columns",
            "valueType": "record-list",
            "required": true
          },
          {
            "key": "groups",
            "valueType": "record-list",
            "required": false
          },
          {
            "key": "rows",
            "valueType": "record-list",
            "required": false
          }
        ],
        "groups": [
          {
            "of": "columns",
            "fields": [
              {
                "key": "key",
                "valueType": "identifier",
                "required": true
              },
              {
                "key": "name",
                "valueType": "text",
                "required": false
              },
              {
                "key": "type",
                "valueType": "enum",
                "required": true,
                "values": [
                  "prose",
                  "text",
                  "integer",
                  "decimal",
                  "quantity",
                  "boolean",
                  "math"
                ]
              },
              {
                "key": "unit",
                "valueType": "text",
                "required": false
              },
              {
                "key": "align",
                "valueType": "enum",
                "required": false,
                "values": [
                  "left",
                  "center",
                  "right"
                ]
              }
            ]
          },
          {
            "of": "groups",
            "fields": [
              {
                "key": "name",
                "valueType": "text",
                "required": true
              },
              {
                "key": "columns",
                "valueType": "string-list",
                "required": true
              }
            ]
          }
        ],
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "$id": "azeforge.table/grammar/v1",
          "type": "object",
          "additionalProperties": false,
          "required": [
            "columns"
          ],
          "properties": {
            "columns": {
              "type": "array"
            },
            "groups": {
              "type": "array"
            },
            "rows": {
              "type": "array"
            }
          }
        }
      },
      "limits": {
        "maxColumns": 64,
        "maxRows": 1000,
        "maxGroups": 16,
        "maxTextCellChars": 500,
        "maxMathCellChars": 4000
      }
    },
    {
      "type": "plot",
      "title": "Plot",
      "pluginVersion": "1.0.0",
      "namespace": "azeforge.plot",
      "bodySyntax": {
        "id": "azeforge.plot/v1",
        "version": "1.0.0"
      },
      "header": {
        "separator": "----",
        "fields": [
          {
            "key": "id",
            "valueType": "identifier",
            "required": false
          },
          {
            "key": "number",
            "valueType": "boolean",
            "required": false
          },
          {
            "key": "width",
            "valueType": "integer",
            "required": false
          },
          {
            "key": "height",
            "valueType": "integer",
            "required": false
          },
          {
            "key": "legend",
            "valueType": "boolean",
            "required": false
          },
          {
            "key": "grid",
            "valueType": "boolean",
            "required": false
          },
          {
            "key": "parameters",
            "valueType": "record",
            "required": false
          },
          {
            "key": "x-axis",
            "valueType": "record",
            "required": false
          },
          {
            "key": "y-axis",
            "valueType": "record",
            "required": false
          }
        ],
        "groups": [
          {
            "of": "x-axis",
            "fields": [
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "scale",
                "valueType": "enum",
                "required": false,
                "values": [
                  "linear",
                  "log"
                ]
              },
              {
                "key": "min",
                "valueType": "decimal",
                "required": false
              },
              {
                "key": "max",
                "valueType": "decimal",
                "required": false
              }
            ]
          },
          {
            "of": "y-axis",
            "fields": [
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "scale",
                "valueType": "enum",
                "required": false,
                "values": [
                  "linear",
                  "log"
                ]
              },
              {
                "key": "min",
                "valueType": "decimal",
                "required": false
              },
              {
                "key": "max",
                "valueType": "decimal",
                "required": false
              }
            ]
          }
        ]
      },
      "body": {
        "form": "record-list",
        "recordOpener": "-",
        "records": [
          {
            "kind": "function",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "variable",
                "valueType": "identifier",
                "required": false
              },
              {
                "key": "expression",
                "valueType": "expression",
                "required": true
              },
              {
                "key": "domain",
                "valueType": "record",
                "required": true
              },
              {
                "key": "samples",
                "valueType": "integer",
                "required": false
              }
            ],
            "groups": [
              {
                "of": "domain",
                "fields": [
                  {
                    "key": "min",
                    "valueType": "decimal",
                    "required": true
                  },
                  {
                    "key": "max",
                    "valueType": "decimal",
                    "required": true
                  }
                ]
              }
            ]
          },
          {
            "kind": "line",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "points",
                "valueType": "point-list",
                "required": true
              }
            ],
            "groups": [
              {
                "of": "points",
                "fields": [
                  {
                    "key": "x",
                    "valueType": "decimal",
                    "required": true
                  },
                  {
                    "key": "y",
                    "valueType": "decimal",
                    "required": true
                  },
                  {
                    "key": "error",
                    "valueType": "decimal",
                    "required": false
                  },
                  {
                    "key": "error-low",
                    "valueType": "decimal",
                    "required": false
                  },
                  {
                    "key": "error-high",
                    "valueType": "decimal",
                    "required": false
                  }
                ]
              }
            ]
          },
          {
            "kind": "scatter",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "points",
                "valueType": "point-list",
                "required": true
              }
            ],
            "groups": [
              {
                "of": "points",
                "fields": [
                  {
                    "key": "x",
                    "valueType": "decimal",
                    "required": true
                  },
                  {
                    "key": "y",
                    "valueType": "decimal",
                    "required": true
                  },
                  {
                    "key": "error",
                    "valueType": "decimal",
                    "required": false
                  },
                  {
                    "key": "error-low",
                    "valueType": "decimal",
                    "required": false
                  },
                  {
                    "key": "error-high",
                    "valueType": "decimal",
                    "required": false
                  }
                ]
              }
            ]
          }
        ],
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "$id": "azeforge.plot/grammar/v1",
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "expression",
                  "domain"
                ],
                "properties": {
                  "kind": {
                    "const": "function"
                  },
                  "label": {
                    "type": "string"
                  },
                  "variable": {
                    "type": "string"
                  },
                  "expression": {
                    "type": "string"
                  },
                  "domain": {
                    "type": "object"
                  },
                  "samples": {
                    "type": [
                      "string",
                      "integer"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "points"
                ],
                "properties": {
                  "kind": {
                    "const": "line"
                  },
                  "label": {
                    "type": "string"
                  },
                  "points": {
                    "type": "array",
                    "items": {
                      "type": "object"
                    }
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "points"
                ],
                "properties": {
                  "kind": {
                    "const": "scatter"
                  },
                  "label": {
                    "type": "string"
                  },
                  "points": {
                    "type": "array",
                    "items": {
                      "type": "object"
                    }
                  }
                }
              }
            ]
          }
        }
      },
      "limits": {
        "maxSeries": 16,
        "maxPointsPerSeries": 5000,
        "maxSamples": 10000,
        "maxParameters": 64,
        "maxLabelChars": 500
      }
    },
    {
      "type": "chart",
      "title": "Chart",
      "pluginVersion": "1.0.0",
      "namespace": "azeforge.chart",
      "bodySyntax": {
        "id": "azeforge.chart/v1",
        "version": "1.0.0"
      },
      "header": {
        "separator": "----",
        "fields": [
          {
            "key": "id",
            "valueType": "identifier",
            "required": false
          },
          {
            "key": "number",
            "valueType": "boolean",
            "required": false
          },
          {
            "key": "type",
            "valueType": "enum",
            "required": true,
            "values": [
              "bar",
              "grouped-bar",
              "stacked-bar",
              "histogram"
            ]
          },
          {
            "key": "width",
            "valueType": "integer",
            "required": false
          },
          {
            "key": "height",
            "valueType": "integer",
            "required": false
          },
          {
            "key": "legend",
            "valueType": "boolean",
            "required": false
          },
          {
            "key": "grid",
            "valueType": "boolean",
            "required": false
          },
          {
            "key": "x-label",
            "valueType": "text",
            "required": false
          },
          {
            "key": "y-label",
            "valueType": "text",
            "required": false
          },
          {
            "key": "y-min",
            "valueType": "decimal",
            "required": false
          },
          {
            "key": "y-max",
            "valueType": "decimal",
            "required": false
          }
        ]
      },
      "body": {
        "form": "record-list",
        "recordOpener": "-",
        "records": [
          {
            "kind": "bars",
            "fields": [
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "bars",
                "valueType": "record-list",
                "required": true
              },
              {
                "key": "min",
                "valueType": "decimal",
                "required": false
              },
              {
                "key": "max",
                "valueType": "decimal",
                "required": false
              }
            ],
            "groups": [
              {
                "of": "bars",
                "fields": [
                  {
                    "key": "category",
                    "valueType": "text",
                    "required": true
                  },
                  {
                    "key": "value",
                    "valueType": "decimal",
                    "required": true
                  },
                  {
                    "key": "error",
                    "valueType": "decimal",
                    "required": false
                  },
                  {
                    "key": "error-low",
                    "valueType": "decimal",
                    "required": false
                  },
                  {
                    "key": "error-high",
                    "valueType": "decimal",
                    "required": false
                  }
                ]
              }
            ]
          },
          {
            "kind": "histogram",
            "fields": [
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "values",
                "valueType": "string-list",
                "required": true
              },
              {
                "key": "edges",
                "valueType": "string-list",
                "required": false
              },
              {
                "key": "bin-count",
                "valueType": "integer",
                "required": false
              },
              {
                "key": "min",
                "valueType": "decimal",
                "required": false
              },
              {
                "key": "max",
                "valueType": "decimal",
                "required": false
              }
            ]
          }
        ],
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "$id": "azeforge.chart/grammar/v1",
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "bars"
                ],
                "properties": {
                  "label": {
                    "type": "string"
                  },
                  "bars": {
                    "type": "array"
                  },
                  "min": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "max": {
                    "type": [
                      "string",
                      "number"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "values"
                ],
                "properties": {
                  "label": {
                    "type": "string"
                  },
                  "values": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "edges": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "bin-count": {
                    "type": [
                      "string",
                      "integer"
                    ]
                  },
                  "min": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "max": {
                    "type": [
                      "string",
                      "number"
                    ]
                  }
                }
              }
            ]
          }
        }
      },
      "limits": {
        "maxSeries": 16,
        "maxHistogramValues": 10000,
        "maxBins": 256,
        "maxBarCategories": 256,
        "maxLabelChars": 500
      }
    },
    {
      "type": "geometry",
      "title": "Geometry",
      "pluginVersion": "1.0.0",
      "namespace": "azeforge.geometry",
      "bodySyntax": {
        "id": "azeforge.geometry/v1",
        "version": "1.0.0"
      },
      "header": {
        "separator": "----",
        "fields": [
          {
            "key": "id",
            "valueType": "identifier",
            "required": false
          },
          {
            "key": "number",
            "valueType": "boolean",
            "required": false
          },
          {
            "key": "width",
            "valueType": "integer",
            "required": false
          },
          {
            "key": "height",
            "valueType": "integer",
            "required": false
          },
          {
            "key": "bounds",
            "valueType": "record",
            "required": false
          }
        ],
        "groups": [
          {
            "of": "bounds",
            "fields": [
              {
                "key": "min-x",
                "valueType": "decimal",
                "required": true
              },
              {
                "key": "min-y",
                "valueType": "decimal",
                "required": true
              },
              {
                "key": "max-x",
                "valueType": "decimal",
                "required": true
              },
              {
                "key": "max-y",
                "valueType": "decimal",
                "required": true
              }
            ]
          }
        ]
      },
      "body": {
        "form": "record-list",
        "recordOpener": "-",
        "records": [
          {
            "kind": "point",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true,
                "values": [
                  "point",
                  "segment",
                  "line",
                  "ray",
                  "circle",
                  "arc",
                  "polygon",
                  "midpoint",
                  "intersection",
                  "tangent-line",
                  "perpendicular-foot",
                  "perpendicular-line",
                  "parallel-line",
                  "angle-mark",
                  "length-mark",
                  "equal-marks",
                  "right-angle-mark"
                ]
              },
              {
                "key": "name",
                "valueType": "identifier",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "x",
                "valueType": "decimal",
                "required": true
              },
              {
                "key": "y",
                "valueType": "decimal",
                "required": true
              },
              {
                "key": "visible",
                "valueType": "boolean",
                "required": false
              },
              {
                "key": "style",
                "valueType": "enum",
                "required": false,
                "values": [
                  "solid",
                  "dashed"
                ]
              }
            ]
          },
          {
            "kind": "segment",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true,
                "values": [
                  "point",
                  "segment",
                  "line",
                  "ray",
                  "circle",
                  "arc",
                  "polygon",
                  "midpoint",
                  "intersection",
                  "tangent-line",
                  "perpendicular-foot",
                  "perpendicular-line",
                  "parallel-line",
                  "angle-mark",
                  "length-mark",
                  "equal-marks",
                  "right-angle-mark"
                ]
              },
              {
                "key": "name",
                "valueType": "identifier",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "from",
                "valueType": "name",
                "required": true
              },
              {
                "key": "to",
                "valueType": "name",
                "required": true
              },
              {
                "key": "visible",
                "valueType": "boolean",
                "required": false
              },
              {
                "key": "style",
                "valueType": "enum",
                "required": false,
                "values": [
                  "solid",
                  "dashed"
                ]
              }
            ]
          },
          {
            "kind": "line",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true,
                "values": [
                  "point",
                  "segment",
                  "line",
                  "ray",
                  "circle",
                  "arc",
                  "polygon",
                  "midpoint",
                  "intersection",
                  "tangent-line",
                  "perpendicular-foot",
                  "perpendicular-line",
                  "parallel-line",
                  "angle-mark",
                  "length-mark",
                  "equal-marks",
                  "right-angle-mark"
                ]
              },
              {
                "key": "name",
                "valueType": "identifier",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "through-first",
                "valueType": "name",
                "required": true
              },
              {
                "key": "through-second",
                "valueType": "name",
                "required": true
              },
              {
                "key": "visible",
                "valueType": "boolean",
                "required": false
              },
              {
                "key": "style",
                "valueType": "enum",
                "required": false,
                "values": [
                  "solid",
                  "dashed"
                ]
              }
            ]
          },
          {
            "kind": "ray",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true,
                "values": [
                  "point",
                  "segment",
                  "line",
                  "ray",
                  "circle",
                  "arc",
                  "polygon",
                  "midpoint",
                  "intersection",
                  "tangent-line",
                  "perpendicular-foot",
                  "perpendicular-line",
                  "parallel-line",
                  "angle-mark",
                  "length-mark",
                  "equal-marks",
                  "right-angle-mark"
                ]
              },
              {
                "key": "name",
                "valueType": "identifier",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "origin",
                "valueType": "name",
                "required": true
              },
              {
                "key": "through",
                "valueType": "name",
                "required": true
              },
              {
                "key": "visible",
                "valueType": "boolean",
                "required": false
              },
              {
                "key": "style",
                "valueType": "enum",
                "required": false,
                "values": [
                  "solid",
                  "dashed"
                ]
              }
            ]
          },
          {
            "kind": "circle",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true,
                "values": [
                  "point",
                  "segment",
                  "line",
                  "ray",
                  "circle",
                  "arc",
                  "polygon",
                  "midpoint",
                  "intersection",
                  "tangent-line",
                  "perpendicular-foot",
                  "perpendicular-line",
                  "parallel-line",
                  "angle-mark",
                  "length-mark",
                  "equal-marks",
                  "right-angle-mark"
                ]
              },
              {
                "key": "name",
                "valueType": "identifier",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "center",
                "valueType": "name",
                "required": true
              },
              {
                "key": "radius",
                "valueType": "decimal",
                "required": false
              },
              {
                "key": "point",
                "valueType": "name",
                "required": false
              },
              {
                "key": "visible",
                "valueType": "boolean",
                "required": false
              },
              {
                "key": "style",
                "valueType": "enum",
                "required": false,
                "values": [
                  "solid",
                  "dashed"
                ]
              }
            ]
          },
          {
            "kind": "arc",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true,
                "values": [
                  "point",
                  "segment",
                  "line",
                  "ray",
                  "circle",
                  "arc",
                  "polygon",
                  "midpoint",
                  "intersection",
                  "tangent-line",
                  "perpendicular-foot",
                  "perpendicular-line",
                  "parallel-line",
                  "angle-mark",
                  "length-mark",
                  "equal-marks",
                  "right-angle-mark"
                ]
              },
              {
                "key": "name",
                "valueType": "identifier",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "center",
                "valueType": "name",
                "required": true
              },
              {
                "key": "radius",
                "valueType": "decimal",
                "required": true
              },
              {
                "key": "start-angle",
                "valueType": "decimal",
                "required": true
              },
              {
                "key": "end-angle",
                "valueType": "decimal",
                "required": true
              },
              {
                "key": "direction",
                "valueType": "enum",
                "required": true,
                "values": [
                  "cw",
                  "ccw"
                ]
              },
              {
                "key": "visible",
                "valueType": "boolean",
                "required": false
              },
              {
                "key": "style",
                "valueType": "enum",
                "required": false,
                "values": [
                  "solid",
                  "dashed"
                ]
              }
            ]
          },
          {
            "kind": "polygon",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true,
                "values": [
                  "point",
                  "segment",
                  "line",
                  "ray",
                  "circle",
                  "arc",
                  "polygon",
                  "midpoint",
                  "intersection",
                  "tangent-line",
                  "perpendicular-foot",
                  "perpendicular-line",
                  "parallel-line",
                  "angle-mark",
                  "length-mark",
                  "equal-marks",
                  "right-angle-mark"
                ]
              },
              {
                "key": "name",
                "valueType": "identifier",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "vertices",
                "valueType": "string-list",
                "required": true
              },
              {
                "key": "visible",
                "valueType": "boolean",
                "required": false
              },
              {
                "key": "style",
                "valueType": "enum",
                "required": false,
                "values": [
                  "solid",
                  "dashed"
                ]
              }
            ]
          },
          {
            "kind": "midpoint",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true,
                "values": [
                  "point",
                  "segment",
                  "line",
                  "ray",
                  "circle",
                  "arc",
                  "polygon",
                  "midpoint",
                  "intersection",
                  "tangent-line",
                  "perpendicular-foot",
                  "perpendicular-line",
                  "parallel-line",
                  "angle-mark",
                  "length-mark",
                  "equal-marks",
                  "right-angle-mark"
                ]
              },
              {
                "key": "name",
                "valueType": "identifier",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "from",
                "valueType": "name",
                "required": true
              },
              {
                "key": "to",
                "valueType": "name",
                "required": true
              },
              {
                "key": "visible",
                "valueType": "boolean",
                "required": false
              },
              {
                "key": "style",
                "valueType": "enum",
                "required": false,
                "values": [
                  "solid",
                  "dashed"
                ]
              }
            ]
          },
          {
            "kind": "intersection",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true,
                "values": [
                  "point",
                  "segment",
                  "line",
                  "ray",
                  "circle",
                  "arc",
                  "polygon",
                  "midpoint",
                  "intersection",
                  "tangent-line",
                  "perpendicular-foot",
                  "perpendicular-line",
                  "parallel-line",
                  "angle-mark",
                  "length-mark",
                  "equal-marks",
                  "right-angle-mark"
                ]
              },
              {
                "key": "name",
                "valueType": "identifier",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "first",
                "valueType": "name",
                "required": true
              },
              {
                "key": "second",
                "valueType": "name",
                "required": true
              },
              {
                "key": "pick",
                "valueType": "integer",
                "required": false
              },
              {
                "key": "visible",
                "valueType": "boolean",
                "required": false
              },
              {
                "key": "style",
                "valueType": "enum",
                "required": false,
                "values": [
                  "solid",
                  "dashed"
                ]
              }
            ]
          },
          {
            "kind": "tangent-line",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true,
                "values": [
                  "point",
                  "segment",
                  "line",
                  "ray",
                  "circle",
                  "arc",
                  "polygon",
                  "midpoint",
                  "intersection",
                  "tangent-line",
                  "perpendicular-foot",
                  "perpendicular-line",
                  "parallel-line",
                  "angle-mark",
                  "length-mark",
                  "equal-marks",
                  "right-angle-mark"
                ]
              },
              {
                "key": "name",
                "valueType": "identifier",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "circle",
                "valueType": "name",
                "required": true
              },
              {
                "key": "at",
                "valueType": "name",
                "required": false
              },
              {
                "key": "from",
                "valueType": "name",
                "required": false
              },
              {
                "key": "pick",
                "valueType": "integer",
                "required": false
              },
              {
                "key": "visible",
                "valueType": "boolean",
                "required": false
              },
              {
                "key": "style",
                "valueType": "enum",
                "required": false,
                "values": [
                  "solid",
                  "dashed"
                ]
              }
            ]
          },
          {
            "kind": "perpendicular-foot",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true,
                "values": [
                  "point",
                  "segment",
                  "line",
                  "ray",
                  "circle",
                  "arc",
                  "polygon",
                  "midpoint",
                  "intersection",
                  "tangent-line",
                  "perpendicular-foot",
                  "perpendicular-line",
                  "parallel-line",
                  "angle-mark",
                  "length-mark",
                  "equal-marks",
                  "right-angle-mark"
                ]
              },
              {
                "key": "name",
                "valueType": "identifier",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "from",
                "valueType": "name",
                "required": true
              },
              {
                "key": "to",
                "valueType": "name",
                "required": true
              },
              {
                "key": "visible",
                "valueType": "boolean",
                "required": false
              },
              {
                "key": "style",
                "valueType": "enum",
                "required": false,
                "values": [
                  "solid",
                  "dashed"
                ]
              }
            ]
          },
          {
            "kind": "perpendicular-line",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true,
                "values": [
                  "point",
                  "segment",
                  "line",
                  "ray",
                  "circle",
                  "arc",
                  "polygon",
                  "midpoint",
                  "intersection",
                  "tangent-line",
                  "perpendicular-foot",
                  "perpendicular-line",
                  "parallel-line",
                  "angle-mark",
                  "length-mark",
                  "equal-marks",
                  "right-angle-mark"
                ]
              },
              {
                "key": "name",
                "valueType": "identifier",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "through",
                "valueType": "name",
                "required": true
              },
              {
                "key": "to",
                "valueType": "name",
                "required": true
              },
              {
                "key": "visible",
                "valueType": "boolean",
                "required": false
              },
              {
                "key": "style",
                "valueType": "enum",
                "required": false,
                "values": [
                  "solid",
                  "dashed"
                ]
              }
            ]
          },
          {
            "kind": "parallel-line",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true,
                "values": [
                  "point",
                  "segment",
                  "line",
                  "ray",
                  "circle",
                  "arc",
                  "polygon",
                  "midpoint",
                  "intersection",
                  "tangent-line",
                  "perpendicular-foot",
                  "perpendicular-line",
                  "parallel-line",
                  "angle-mark",
                  "length-mark",
                  "equal-marks",
                  "right-angle-mark"
                ]
              },
              {
                "key": "name",
                "valueType": "identifier",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "through",
                "valueType": "name",
                "required": true
              },
              {
                "key": "to",
                "valueType": "name",
                "required": true
              },
              {
                "key": "visible",
                "valueType": "boolean",
                "required": false
              },
              {
                "key": "style",
                "valueType": "enum",
                "required": false,
                "values": [
                  "solid",
                  "dashed"
                ]
              }
            ]
          },
          {
            "kind": "angle-mark",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true,
                "values": [
                  "point",
                  "segment",
                  "line",
                  "ray",
                  "circle",
                  "arc",
                  "polygon",
                  "midpoint",
                  "intersection",
                  "tangent-line",
                  "perpendicular-foot",
                  "perpendicular-line",
                  "parallel-line",
                  "angle-mark",
                  "length-mark",
                  "equal-marks",
                  "right-angle-mark"
                ]
              },
              {
                "key": "first",
                "valueType": "name",
                "required": true
              },
              {
                "key": "second",
                "valueType": "name",
                "required": true
              },
              {
                "key": "third",
                "valueType": "name",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "measure",
                "valueType": "enum",
                "required": false,
                "values": [
                  "angle"
                ]
              },
              {
                "key": "visible",
                "valueType": "boolean",
                "required": false
              },
              {
                "key": "style",
                "valueType": "enum",
                "required": false,
                "values": [
                  "solid",
                  "dashed"
                ]
              }
            ]
          },
          {
            "kind": "length-mark",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true,
                "values": [
                  "point",
                  "segment",
                  "line",
                  "ray",
                  "circle",
                  "arc",
                  "polygon",
                  "midpoint",
                  "intersection",
                  "tangent-line",
                  "perpendicular-foot",
                  "perpendicular-line",
                  "parallel-line",
                  "angle-mark",
                  "length-mark",
                  "equal-marks",
                  "right-angle-mark"
                ]
              },
              {
                "key": "segment",
                "valueType": "name",
                "required": false
              },
              {
                "key": "from",
                "valueType": "name",
                "required": false
              },
              {
                "key": "to",
                "valueType": "name",
                "required": false
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "measure",
                "valueType": "enum",
                "required": false,
                "values": [
                  "length"
                ]
              },
              {
                "key": "visible",
                "valueType": "boolean",
                "required": false
              },
              {
                "key": "style",
                "valueType": "enum",
                "required": false,
                "values": [
                  "solid",
                  "dashed"
                ]
              }
            ]
          },
          {
            "kind": "equal-marks",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true,
                "values": [
                  "point",
                  "segment",
                  "line",
                  "ray",
                  "circle",
                  "arc",
                  "polygon",
                  "midpoint",
                  "intersection",
                  "tangent-line",
                  "perpendicular-foot",
                  "perpendicular-line",
                  "parallel-line",
                  "angle-mark",
                  "length-mark",
                  "equal-marks",
                  "right-angle-mark"
                ]
              },
              {
                "key": "group",
                "valueType": "identifier",
                "required": true
              },
              {
                "key": "segments",
                "valueType": "string-list",
                "required": true
              },
              {
                "key": "visible",
                "valueType": "boolean",
                "required": false
              },
              {
                "key": "style",
                "valueType": "enum",
                "required": false,
                "values": [
                  "solid",
                  "dashed"
                ]
              }
            ]
          },
          {
            "kind": "right-angle-mark",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true,
                "values": [
                  "point",
                  "segment",
                  "line",
                  "ray",
                  "circle",
                  "arc",
                  "polygon",
                  "midpoint",
                  "intersection",
                  "tangent-line",
                  "perpendicular-foot",
                  "perpendicular-line",
                  "parallel-line",
                  "angle-mark",
                  "length-mark",
                  "equal-marks",
                  "right-angle-mark"
                ]
              },
              {
                "key": "first",
                "valueType": "name",
                "required": true
              },
              {
                "key": "second",
                "valueType": "name",
                "required": true
              },
              {
                "key": "third",
                "valueType": "name",
                "required": true
              },
              {
                "key": "visible",
                "valueType": "boolean",
                "required": false
              },
              {
                "key": "style",
                "valueType": "enum",
                "required": false,
                "values": [
                  "solid",
                  "dashed"
                ]
              }
            ]
          }
        ],
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "$id": "azeforge.geometry/grammar/v1",
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "name",
                  "x",
                  "y"
                ],
                "properties": {
                  "kind": {
                    "const": "point"
                  },
                  "name": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "x": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "y": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "visible": {
                    "type": "boolean"
                  },
                  "style": {
                    "type": "string",
                    "enum": [
                      "solid",
                      "dashed"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "name",
                  "from",
                  "to"
                ],
                "properties": {
                  "kind": {
                    "const": "segment"
                  },
                  "name": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "from": {
                    "type": "string"
                  },
                  "to": {
                    "type": "string"
                  },
                  "visible": {
                    "type": "boolean"
                  },
                  "style": {
                    "type": "string",
                    "enum": [
                      "solid",
                      "dashed"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "name",
                  "through-first",
                  "through-second"
                ],
                "properties": {
                  "kind": {
                    "const": "line"
                  },
                  "name": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "through-first": {
                    "type": "string"
                  },
                  "through-second": {
                    "type": "string"
                  },
                  "visible": {
                    "type": "boolean"
                  },
                  "style": {
                    "type": "string",
                    "enum": [
                      "solid",
                      "dashed"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "name",
                  "origin",
                  "through"
                ],
                "properties": {
                  "kind": {
                    "const": "ray"
                  },
                  "name": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "origin": {
                    "type": "string"
                  },
                  "through": {
                    "type": "string"
                  },
                  "visible": {
                    "type": "boolean"
                  },
                  "style": {
                    "type": "string",
                    "enum": [
                      "solid",
                      "dashed"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "name",
                  "center"
                ],
                "properties": {
                  "kind": {
                    "const": "circle"
                  },
                  "name": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "center": {
                    "type": "string"
                  },
                  "radius": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "point": {
                    "type": "string"
                  },
                  "visible": {
                    "type": "boolean"
                  },
                  "style": {
                    "type": "string",
                    "enum": [
                      "solid",
                      "dashed"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "name",
                  "center",
                  "radius",
                  "start-angle",
                  "end-angle",
                  "direction"
                ],
                "properties": {
                  "kind": {
                    "const": "arc"
                  },
                  "name": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "center": {
                    "type": "string"
                  },
                  "radius": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "start-angle": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "end-angle": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "direction": {
                    "type": "string",
                    "enum": [
                      "cw",
                      "ccw"
                    ]
                  },
                  "visible": {
                    "type": "boolean"
                  },
                  "style": {
                    "type": "string",
                    "enum": [
                      "solid",
                      "dashed"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "name",
                  "vertices"
                ],
                "properties": {
                  "kind": {
                    "const": "polygon"
                  },
                  "name": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "vertices": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "visible": {
                    "type": "boolean"
                  },
                  "style": {
                    "type": "string",
                    "enum": [
                      "solid",
                      "dashed"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "name",
                  "from",
                  "to"
                ],
                "properties": {
                  "kind": {
                    "const": "midpoint"
                  },
                  "name": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "from": {
                    "type": "string"
                  },
                  "to": {
                    "type": "string"
                  },
                  "visible": {
                    "type": "boolean"
                  },
                  "style": {
                    "type": "string",
                    "enum": [
                      "solid",
                      "dashed"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "name",
                  "first",
                  "second"
                ],
                "properties": {
                  "kind": {
                    "const": "intersection"
                  },
                  "name": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "first": {
                    "type": "string"
                  },
                  "second": {
                    "type": "string"
                  },
                  "pick": {
                    "type": [
                      "string",
                      "integer"
                    ]
                  },
                  "visible": {
                    "type": "boolean"
                  },
                  "style": {
                    "type": "string",
                    "enum": [
                      "solid",
                      "dashed"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "name",
                  "circle"
                ],
                "properties": {
                  "kind": {
                    "const": "tangent-line"
                  },
                  "name": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "circle": {
                    "type": "string"
                  },
                  "at": {
                    "type": "string"
                  },
                  "from": {
                    "type": "string"
                  },
                  "pick": {
                    "type": [
                      "string",
                      "integer"
                    ]
                  },
                  "visible": {
                    "type": "boolean"
                  },
                  "style": {
                    "type": "string",
                    "enum": [
                      "solid",
                      "dashed"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "name",
                  "from",
                  "to"
                ],
                "properties": {
                  "kind": {
                    "const": "perpendicular-foot"
                  },
                  "name": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "from": {
                    "type": "string"
                  },
                  "to": {
                    "type": "string"
                  },
                  "visible": {
                    "type": "boolean"
                  },
                  "style": {
                    "type": "string",
                    "enum": [
                      "solid",
                      "dashed"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "name",
                  "through",
                  "to"
                ],
                "properties": {
                  "kind": {
                    "const": "perpendicular-line"
                  },
                  "name": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "through": {
                    "type": "string"
                  },
                  "to": {
                    "type": "string"
                  },
                  "visible": {
                    "type": "boolean"
                  },
                  "style": {
                    "type": "string",
                    "enum": [
                      "solid",
                      "dashed"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "name",
                  "through",
                  "to"
                ],
                "properties": {
                  "kind": {
                    "const": "parallel-line"
                  },
                  "name": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "through": {
                    "type": "string"
                  },
                  "to": {
                    "type": "string"
                  },
                  "visible": {
                    "type": "boolean"
                  },
                  "style": {
                    "type": "string",
                    "enum": [
                      "solid",
                      "dashed"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "first",
                  "second",
                  "third"
                ],
                "properties": {
                  "kind": {
                    "const": "angle-mark"
                  },
                  "first": {
                    "type": "string"
                  },
                  "second": {
                    "type": "string"
                  },
                  "third": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "measure": {
                    "type": "string",
                    "enum": [
                      "angle"
                    ]
                  },
                  "visible": {
                    "type": "boolean"
                  },
                  "style": {
                    "type": "string",
                    "enum": [
                      "solid",
                      "dashed"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind"
                ],
                "properties": {
                  "kind": {
                    "const": "length-mark"
                  },
                  "segment": {
                    "type": "string"
                  },
                  "from": {
                    "type": "string"
                  },
                  "to": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "measure": {
                    "type": "string",
                    "enum": [
                      "length"
                    ]
                  },
                  "visible": {
                    "type": "boolean"
                  },
                  "style": {
                    "type": "string",
                    "enum": [
                      "solid",
                      "dashed"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "group",
                  "segments"
                ],
                "properties": {
                  "kind": {
                    "const": "equal-marks"
                  },
                  "group": {
                    "type": "string"
                  },
                  "segments": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "visible": {
                    "type": "boolean"
                  },
                  "style": {
                    "type": "string",
                    "enum": [
                      "solid",
                      "dashed"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "first",
                  "second",
                  "third"
                ],
                "properties": {
                  "kind": {
                    "const": "right-angle-mark"
                  },
                  "first": {
                    "type": "string"
                  },
                  "second": {
                    "type": "string"
                  },
                  "third": {
                    "type": "string"
                  },
                  "visible": {
                    "type": "boolean"
                  },
                  "style": {
                    "type": "string",
                    "enum": [
                      "solid",
                      "dashed"
                    ]
                  }
                }
              }
            ]
          }
        }
      },
      "limits": {
        "maxDeclarations": 256,
        "maxPolygonVertices": 64,
        "maxEqualMarkSegments": 16,
        "maxEqualMarkGroups": 16,
        "maxLabelChars": 500,
        "maxCoordinateMagnitude": 1000000,
        "maxDimensionPx": 4096
      }
    },
    {
      "type": "formula",
      "title": "Chemical formula",
      "pluginVersion": "1.0.0",
      "namespace": "azeforge.chemistry.formula",
      "bodySyntax": {
        "id": "azeforge.formula/v1",
        "version": "1.0.0"
      },
      "header": {
        "separator": "----",
        "fields": [
          {
            "key": "id",
            "valueType": "identifier",
            "required": false
          },
          {
            "key": "number",
            "valueType": "boolean",
            "required": false
          }
        ]
      },
      "body": {
        "form": "scalar-lines",
        "fields": [
          {
            "key": "expression",
            "valueType": "expression",
            "required": true
          }
        ],
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "$id": "azeforge.formula/grammar/v1",
          "type": "object",
          "additionalProperties": false,
          "required": [
            "expression"
          ],
          "properties": {
            "expression": {
              "type": "string"
            }
          }
        }
      },
      "limits": {
        "maxFormulaExpressionChars": 512,
        "maxFormulaCharge": 8,
        "maxSubscript": 999,
        "maxGroupNesting": 3,
        "maxIsotopeMass": 299
      }
    },
    {
      "type": "reaction",
      "title": "Chemical reaction",
      "pluginVersion": "1.0.0",
      "namespace": "azeforge.chemistry.reaction",
      "bodySyntax": {
        "id": "azeforge.reaction/v1",
        "version": "1.0.0"
      },
      "header": {
        "separator": "----",
        "fields": [
          {
            "key": "id",
            "valueType": "identifier",
            "required": false
          },
          {
            "key": "number",
            "valueType": "boolean",
            "required": false
          },
          {
            "key": "above",
            "valueType": "text",
            "required": false
          },
          {
            "key": "below",
            "valueType": "text",
            "required": false
          },
          {
            "key": "balance",
            "valueType": "enum",
            "required": false,
            "values": [
              "none",
              "check"
            ]
          }
        ]
      },
      "body": {
        "form": "scalar-lines",
        "fields": [
          {
            "key": "equation",
            "valueType": "expression",
            "required": true
          }
        ],
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "$id": "azeforge.reaction/grammar/v1",
          "type": "object",
          "additionalProperties": false,
          "required": [
            "equation"
          ],
          "properties": {
            "equation": {
              "type": "string"
            }
          }
        }
      },
      "limits": {
        "maxReactionSpecies": 32,
        "maxReactionSpeciesChars": 128,
        "maxReactionConditionChars": 256
      }
    },
    {
      "type": "structure",
      "title": "Molecular structure",
      "pluginVersion": "1.0.0",
      "namespace": "azeforge.chemistry.structure",
      "bodySyntax": {
        "id": "azeforge.structure/v1",
        "version": "1.0.0"
      },
      "header": {
        "separator": "----",
        "fields": [
          {
            "key": "id",
            "valueType": "identifier",
            "required": false
          },
          {
            "key": "number",
            "valueType": "boolean",
            "required": false
          },
          {
            "key": "width",
            "valueType": "integer",
            "required": false
          },
          {
            "key": "height",
            "valueType": "integer",
            "required": false
          }
        ]
      },
      "body": {
        "form": "record-list",
        "recordOpener": "-",
        "records": [
          {
            "kind": "atom",
            "fields": [
              {
                "key": "element",
                "valueType": "enum",
                "required": false,
                "values": [
                  "H",
                  "He",
                  "Li",
                  "Be",
                  "B",
                  "C",
                  "N",
                  "O",
                  "F",
                  "Ne",
                  "Na",
                  "Mg",
                  "Al",
                  "Si",
                  "P",
                  "S",
                  "Cl",
                  "Ar",
                  "K",
                  "Ca",
                  "Sc",
                  "Ti",
                  "V",
                  "Cr",
                  "Mn",
                  "Fe",
                  "Co",
                  "Ni",
                  "Cu",
                  "Zn",
                  "Ga",
                  "Ge",
                  "As",
                  "Se",
                  "Br",
                  "Kr",
                  "Rb",
                  "Sr",
                  "Y",
                  "Zr",
                  "Nb",
                  "Mo",
                  "Tc",
                  "Ru",
                  "Rh",
                  "Pd",
                  "Ag",
                  "Cd",
                  "In",
                  "Sn",
                  "Sb",
                  "Te",
                  "I",
                  "Xe",
                  "Cs",
                  "Ba",
                  "La",
                  "Ce",
                  "Pr",
                  "Nd",
                  "Pm",
                  "Sm",
                  "Eu",
                  "Gd",
                  "Tb",
                  "Dy",
                  "Ho",
                  "Er",
                  "Tm",
                  "Yb",
                  "Lu",
                  "Hf",
                  "Ta",
                  "W",
                  "Re",
                  "Os",
                  "Ir",
                  "Pt",
                  "Au",
                  "Hg",
                  "Tl",
                  "Pb",
                  "Bi",
                  "Po",
                  "At",
                  "Rn",
                  "Fr",
                  "Ra",
                  "Ac",
                  "Th",
                  "Pa",
                  "U",
                  "Np",
                  "Pu",
                  "Am",
                  "Cm",
                  "Bk",
                  "Cf",
                  "Es",
                  "Fm",
                  "Md",
                  "No",
                  "Lr",
                  "Rf",
                  "Db",
                  "Sg",
                  "Bh",
                  "Hs",
                  "Mt",
                  "Ds",
                  "Rg",
                  "Cn",
                  "Nh",
                  "Fl",
                  "Mc",
                  "Lv",
                  "Ts",
                  "Og"
                ]
              },
              {
                "key": "attach",
                "valueType": "text",
                "required": false
              },
              {
                "key": "charge",
                "valueType": "integer",
                "required": false
              },
              {
                "key": "isotope",
                "valueType": "integer",
                "required": false
              },
              {
                "key": "at",
                "valueType": "point-list",
                "required": true
              },
              {
                "key": "stereo",
                "valueType": "enum",
                "required": false,
                "values": [
                  "unspecified"
                ]
              }
            ]
          },
          {
            "kind": "bond",
            "fields": [
              {
                "key": "from",
                "valueType": "name",
                "required": true
              },
              {
                "key": "to",
                "valueType": "name",
                "required": true
              },
              {
                "key": "order",
                "valueType": "enum",
                "required": true,
                "values": [
                  "1",
                  "2",
                  "3",
                  "aromatic"
                ]
              },
              {
                "key": "stereo",
                "valueType": "enum",
                "required": false,
                "values": [
                  "wedge",
                  "hash"
                ]
              }
            ]
          },
          {
            "kind": "label",
            "fields": [
              {
                "key": "text",
                "valueType": "text",
                "required": true
              },
              {
                "key": "at",
                "valueType": "point-list",
                "required": true
              }
            ]
          }
        ],
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "$id": "azeforge.structure/grammar/v1",
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "at"
                ],
                "properties": {
                  "element": {
                    "type": "string",
                    "enum": [
                      "H",
                      "He",
                      "Li",
                      "Be",
                      "B",
                      "C",
                      "N",
                      "O",
                      "F",
                      "Ne",
                      "Na",
                      "Mg",
                      "Al",
                      "Si",
                      "P",
                      "S",
                      "Cl",
                      "Ar",
                      "K",
                      "Ca",
                      "Sc",
                      "Ti",
                      "V",
                      "Cr",
                      "Mn",
                      "Fe",
                      "Co",
                      "Ni",
                      "Cu",
                      "Zn",
                      "Ga",
                      "Ge",
                      "As",
                      "Se",
                      "Br",
                      "Kr",
                      "Rb",
                      "Sr",
                      "Y",
                      "Zr",
                      "Nb",
                      "Mo",
                      "Tc",
                      "Ru",
                      "Rh",
                      "Pd",
                      "Ag",
                      "Cd",
                      "In",
                      "Sn",
                      "Sb",
                      "Te",
                      "I",
                      "Xe",
                      "Cs",
                      "Ba",
                      "La",
                      "Ce",
                      "Pr",
                      "Nd",
                      "Pm",
                      "Sm",
                      "Eu",
                      "Gd",
                      "Tb",
                      "Dy",
                      "Ho",
                      "Er",
                      "Tm",
                      "Yb",
                      "Lu",
                      "Hf",
                      "Ta",
                      "W",
                      "Re",
                      "Os",
                      "Ir",
                      "Pt",
                      "Au",
                      "Hg",
                      "Tl",
                      "Pb",
                      "Bi",
                      "Po",
                      "At",
                      "Rn",
                      "Fr",
                      "Ra",
                      "Ac",
                      "Th",
                      "Pa",
                      "U",
                      "Np",
                      "Pu",
                      "Am",
                      "Cm",
                      "Bk",
                      "Cf",
                      "Es",
                      "Fm",
                      "Md",
                      "No",
                      "Lr",
                      "Rf",
                      "Db",
                      "Sg",
                      "Bh",
                      "Hs",
                      "Mt",
                      "Ds",
                      "Rg",
                      "Cn",
                      "Nh",
                      "Fl",
                      "Mc",
                      "Lv",
                      "Ts",
                      "Og"
                    ]
                  },
                  "attach": {
                    "type": "string"
                  },
                  "charge": {
                    "type": [
                      "string",
                      "integer"
                    ]
                  },
                  "isotope": {
                    "type": [
                      "string",
                      "integer"
                    ]
                  },
                  "at": {
                    "type": "array",
                    "items": {
                      "type": "object"
                    }
                  },
                  "stereo": {
                    "type": "string",
                    "enum": [
                      "unspecified"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "from",
                  "to",
                  "order"
                ],
                "properties": {
                  "from": {
                    "type": "string"
                  },
                  "to": {
                    "type": "string"
                  },
                  "order": {
                    "type": "string",
                    "enum": [
                      "1",
                      "2",
                      "3",
                      "aromatic"
                    ]
                  },
                  "stereo": {
                    "type": "string",
                    "enum": [
                      "wedge",
                      "hash"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "text",
                  "at"
                ],
                "properties": {
                  "text": {
                    "type": "string"
                  },
                  "at": {
                    "type": "array",
                    "items": {
                      "type": "object"
                    }
                  }
                }
              }
            ]
          }
        }
      },
      "limits": {
        "maxStructureAtoms": 512,
        "maxStructureWidth": 4096,
        "maxStructureHeight": 4096,
        "maxStructureLabelChars": 500,
        "maxFormulaCharge": 8,
        "maxIsotopeMass": 299
      }
    },
    {
      "type": "circuit",
      "title": "Circuit",
      "pluginVersion": "1.0.0",
      "namespace": "azeforge.circuit",
      "bodySyntax": {
        "id": "azeforge.circuit/v1",
        "version": "1.0.0"
      },
      "header": {
        "separator": "----",
        "fields": [
          {
            "key": "id",
            "valueType": "identifier",
            "required": false
          },
          {
            "key": "number",
            "valueType": "boolean",
            "required": false
          },
          {
            "key": "title",
            "valueType": "text",
            "required": true
          },
          {
            "key": "description",
            "valueType": "text",
            "required": false
          },
          {
            "key": "flow",
            "valueType": "enum",
            "required": false,
            "values": [
              "left-to-right",
              "top-to-bottom"
            ]
          }
        ]
      },
      "body": {
        "form": "record-list",
        "recordOpener": "-",
        "records": [
          {
            "kind": "node",
            "fields": [
              {
                "key": "ref",
                "valueType": "identifier",
                "required": true
              },
              {
                "key": "role",
                "valueType": "enum",
                "required": false,
                "values": [
                  "signal",
                  "reference"
                ]
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              }
            ]
          },
          {
            "kind": "connect",
            "fields": [
              {
                "key": "terminal",
                "valueType": "text",
                "required": true
              },
              {
                "key": "node",
                "valueType": "identifier",
                "required": true
              }
            ]
          },
          {
            "kind": "voltage-label",
            "fields": [
              {
                "key": "positive",
                "valueType": "identifier",
                "required": true
              },
              {
                "key": "negative",
                "valueType": "identifier",
                "required": true
              }
            ]
          },
          {
            "kind": "current-label",
            "fields": [
              {
                "key": "terminal",
                "valueType": "text",
                "required": true
              },
              {
                "key": "direction",
                "valueType": "enum",
                "required": true,
                "values": [
                  "into",
                  "out"
                ]
              }
            ]
          },
          {
            "kind": "resistor",
            "fields": [
              {
                "key": "ref",
                "valueType": "name",
                "required": true
              },
              {
                "key": "orientation",
                "valueType": "enum",
                "required": false,
                "values": [
                  "left-to-right",
                  "right-to-left",
                  "top-to-bottom",
                  "bottom-to-top"
                ]
              },
              {
                "key": "value",
                "valueType": "quantity",
                "required": true
              }
            ]
          },
          {
            "kind": "capacitor",
            "fields": [
              {
                "key": "ref",
                "valueType": "name",
                "required": true
              },
              {
                "key": "orientation",
                "valueType": "enum",
                "required": false,
                "values": [
                  "left-to-right",
                  "right-to-left",
                  "top-to-bottom",
                  "bottom-to-top"
                ]
              },
              {
                "key": "value",
                "valueType": "quantity",
                "required": true
              }
            ]
          },
          {
            "kind": "inductor",
            "fields": [
              {
                "key": "ref",
                "valueType": "name",
                "required": true
              },
              {
                "key": "orientation",
                "valueType": "enum",
                "required": false,
                "values": [
                  "left-to-right",
                  "right-to-left",
                  "top-to-bottom",
                  "bottom-to-top"
                ]
              },
              {
                "key": "value",
                "valueType": "quantity",
                "required": true
              }
            ]
          },
          {
            "kind": "voltage-source",
            "fields": [
              {
                "key": "ref",
                "valueType": "name",
                "required": true
              },
              {
                "key": "orientation",
                "valueType": "enum",
                "required": false,
                "values": [
                  "left-to-right",
                  "right-to-left",
                  "top-to-bottom",
                  "bottom-to-top"
                ]
              },
              {
                "key": "value",
                "valueType": "quantity",
                "required": true
              },
              {
                "key": "mode",
                "valueType": "enum",
                "required": false,
                "values": [
                  "dc",
                  "ac"
                ]
              }
            ]
          },
          {
            "kind": "current-source",
            "fields": [
              {
                "key": "ref",
                "valueType": "name",
                "required": true
              },
              {
                "key": "orientation",
                "valueType": "enum",
                "required": false,
                "values": [
                  "left-to-right",
                  "right-to-left",
                  "top-to-bottom",
                  "bottom-to-top"
                ]
              },
              {
                "key": "value",
                "valueType": "quantity",
                "required": true
              },
              {
                "key": "mode",
                "valueType": "enum",
                "required": false,
                "values": [
                  "dc",
                  "ac"
                ]
              }
            ]
          },
          {
            "kind": "diode",
            "fields": [
              {
                "key": "ref",
                "valueType": "name",
                "required": true
              },
              {
                "key": "orientation",
                "valueType": "enum",
                "required": false,
                "values": [
                  "left-to-right",
                  "right-to-left",
                  "top-to-bottom",
                  "bottom-to-top"
                ]
              },
              {
                "key": "name",
                "valueType": "text",
                "required": false
              }
            ]
          },
          {
            "kind": "led",
            "fields": [
              {
                "key": "ref",
                "valueType": "name",
                "required": true
              },
              {
                "key": "orientation",
                "valueType": "enum",
                "required": false,
                "values": [
                  "left-to-right",
                  "right-to-left",
                  "top-to-bottom",
                  "bottom-to-top"
                ]
              },
              {
                "key": "name",
                "valueType": "text",
                "required": false
              }
            ]
          },
          {
            "kind": "switch",
            "fields": [
              {
                "key": "ref",
                "valueType": "name",
                "required": true
              },
              {
                "key": "orientation",
                "valueType": "enum",
                "required": false,
                "values": [
                  "left-to-right",
                  "right-to-left",
                  "top-to-bottom",
                  "bottom-to-top"
                ]
              },
              {
                "key": "name",
                "valueType": "text",
                "required": false
              },
              {
                "key": "mode",
                "valueType": "enum",
                "required": false,
                "values": [
                  "normally-open",
                  "normally-closed"
                ]
              }
            ]
          },
          {
            "kind": "dependent-source",
            "fields": [
              {
                "key": "ref",
                "valueType": "name",
                "required": true
              },
              {
                "key": "orientation",
                "valueType": "enum",
                "required": false,
                "values": [
                  "left-to-right",
                  "right-to-left",
                  "top-to-bottom",
                  "bottom-to-top"
                ]
              },
              {
                "key": "value",
                "valueType": "quantity",
                "required": true
              },
              {
                "key": "mode",
                "valueType": "enum",
                "required": false,
                "values": [
                  "VCVS",
                  "VCCS",
                  "CCVS",
                  "CCCS"
                ]
              }
            ]
          },
          {
            "kind": "op-amp",
            "fields": [
              {
                "key": "ref",
                "valueType": "name",
                "required": true
              },
              {
                "key": "orientation",
                "valueType": "enum",
                "required": false,
                "values": [
                  "left-to-right",
                  "right-to-left",
                  "top-to-bottom",
                  "bottom-to-top"
                ]
              },
              {
                "key": "name",
                "valueType": "text",
                "required": false
              }
            ]
          },
          {
            "kind": "bjt",
            "fields": [
              {
                "key": "ref",
                "valueType": "name",
                "required": true
              },
              {
                "key": "orientation",
                "valueType": "enum",
                "required": false,
                "values": [
                  "left-to-right",
                  "right-to-left",
                  "top-to-bottom",
                  "bottom-to-top"
                ]
              },
              {
                "key": "name",
                "valueType": "text",
                "required": false
              },
              {
                "key": "mode",
                "valueType": "enum",
                "required": false,
                "values": [
                  "npn",
                  "pnp"
                ]
              }
            ]
          },
          {
            "kind": "mosfet",
            "fields": [
              {
                "key": "ref",
                "valueType": "name",
                "required": true
              },
              {
                "key": "orientation",
                "valueType": "enum",
                "required": false,
                "values": [
                  "left-to-right",
                  "right-to-left",
                  "top-to-bottom",
                  "bottom-to-top"
                ]
              },
              {
                "key": "name",
                "valueType": "text",
                "required": false
              },
              {
                "key": "mode",
                "valueType": "enum",
                "required": false,
                "values": [
                  "nmos",
                  "pmos"
                ]
              }
            ]
          },
          {
            "kind": "and",
            "fields": [
              {
                "key": "ref",
                "valueType": "name",
                "required": true
              },
              {
                "key": "orientation",
                "valueType": "enum",
                "required": false,
                "values": [
                  "left-to-right",
                  "right-to-left",
                  "top-to-bottom",
                  "bottom-to-top"
                ]
              },
              {
                "key": "inputs",
                "valueType": "enum",
                "required": false,
                "values": [
                  "2",
                  "3",
                  "4"
                ]
              }
            ]
          },
          {
            "kind": "or",
            "fields": [
              {
                "key": "ref",
                "valueType": "name",
                "required": true
              },
              {
                "key": "orientation",
                "valueType": "enum",
                "required": false,
                "values": [
                  "left-to-right",
                  "right-to-left",
                  "top-to-bottom",
                  "bottom-to-top"
                ]
              },
              {
                "key": "inputs",
                "valueType": "enum",
                "required": false,
                "values": [
                  "2",
                  "3",
                  "4"
                ]
              }
            ]
          },
          {
            "kind": "nand",
            "fields": [
              {
                "key": "ref",
                "valueType": "name",
                "required": true
              },
              {
                "key": "orientation",
                "valueType": "enum",
                "required": false,
                "values": [
                  "left-to-right",
                  "right-to-left",
                  "top-to-bottom",
                  "bottom-to-top"
                ]
              },
              {
                "key": "inputs",
                "valueType": "enum",
                "required": false,
                "values": [
                  "2",
                  "3",
                  "4"
                ]
              }
            ]
          },
          {
            "kind": "nor",
            "fields": [
              {
                "key": "ref",
                "valueType": "name",
                "required": true
              },
              {
                "key": "orientation",
                "valueType": "enum",
                "required": false,
                "values": [
                  "left-to-right",
                  "right-to-left",
                  "top-to-bottom",
                  "bottom-to-top"
                ]
              },
              {
                "key": "inputs",
                "valueType": "enum",
                "required": false,
                "values": [
                  "2",
                  "3",
                  "4"
                ]
              }
            ]
          },
          {
            "kind": "xor",
            "fields": [
              {
                "key": "ref",
                "valueType": "name",
                "required": true
              },
              {
                "key": "orientation",
                "valueType": "enum",
                "required": false,
                "values": [
                  "left-to-right",
                  "right-to-left",
                  "top-to-bottom",
                  "bottom-to-top"
                ]
              },
              {
                "key": "inputs",
                "valueType": "enum",
                "required": false,
                "values": [
                  "2",
                  "3",
                  "4"
                ]
              }
            ]
          },
          {
            "kind": "xnor",
            "fields": [
              {
                "key": "ref",
                "valueType": "name",
                "required": true
              },
              {
                "key": "orientation",
                "valueType": "enum",
                "required": false,
                "values": [
                  "left-to-right",
                  "right-to-left",
                  "top-to-bottom",
                  "bottom-to-top"
                ]
              },
              {
                "key": "inputs",
                "valueType": "enum",
                "required": false,
                "values": [
                  "2",
                  "3",
                  "4"
                ]
              }
            ]
          },
          {
            "kind": "not",
            "fields": [
              {
                "key": "ref",
                "valueType": "name",
                "required": true
              },
              {
                "key": "orientation",
                "valueType": "enum",
                "required": false,
                "values": [
                  "left-to-right",
                  "right-to-left",
                  "top-to-bottom",
                  "bottom-to-top"
                ]
              }
            ]
          },
          {
            "kind": "buffer",
            "fields": [
              {
                "key": "ref",
                "valueType": "name",
                "required": true
              },
              {
                "key": "orientation",
                "valueType": "enum",
                "required": false,
                "values": [
                  "left-to-right",
                  "right-to-left",
                  "top-to-bottom",
                  "bottom-to-top"
                ]
              }
            ]
          },
          {
            "kind": "mux-2to1",
            "fields": [
              {
                "key": "ref",
                "valueType": "name",
                "required": true
              },
              {
                "key": "orientation",
                "valueType": "enum",
                "required": false,
                "values": [
                  "left-to-right",
                  "right-to-left",
                  "top-to-bottom",
                  "bottom-to-top"
                ]
              }
            ]
          },
          {
            "kind": "mux-4to1",
            "fields": [
              {
                "key": "ref",
                "valueType": "name",
                "required": true
              },
              {
                "key": "orientation",
                "valueType": "enum",
                "required": false,
                "values": [
                  "left-to-right",
                  "right-to-left",
                  "top-to-bottom",
                  "bottom-to-top"
                ]
              }
            ]
          },
          {
            "kind": "d-flip-flop",
            "fields": [
              {
                "key": "ref",
                "valueType": "name",
                "required": true
              },
              {
                "key": "orientation",
                "valueType": "enum",
                "required": false,
                "values": [
                  "left-to-right",
                  "right-to-left",
                  "top-to-bottom",
                  "bottom-to-top"
                ]
              }
            ]
          },
          {
            "kind": "digital-input",
            "fields": [
              {
                "key": "ref",
                "valueType": "name",
                "required": true
              },
              {
                "key": "orientation",
                "valueType": "enum",
                "required": false,
                "values": [
                  "left-to-right",
                  "right-to-left",
                  "top-to-bottom",
                  "bottom-to-top"
                ]
              },
              {
                "key": "name",
                "valueType": "text",
                "required": true
              }
            ]
          },
          {
            "kind": "digital-output",
            "fields": [
              {
                "key": "ref",
                "valueType": "name",
                "required": true
              },
              {
                "key": "orientation",
                "valueType": "enum",
                "required": false,
                "values": [
                  "left-to-right",
                  "right-to-left",
                  "top-to-bottom",
                  "bottom-to-top"
                ]
              },
              {
                "key": "name",
                "valueType": "text",
                "required": true
              }
            ]
          }
        ],
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "$id": "azeforge.circuit/grammar/v1",
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ref"
                ],
                "properties": {
                  "ref": {
                    "type": "string"
                  },
                  "role": {
                    "type": "string",
                    "enum": [
                      "signal",
                      "reference"
                    ]
                  },
                  "label": {
                    "type": "string"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "terminal",
                  "node"
                ],
                "properties": {
                  "terminal": {
                    "type": "string"
                  },
                  "node": {
                    "type": "string"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "positive",
                  "negative"
                ],
                "properties": {
                  "positive": {
                    "type": "string"
                  },
                  "negative": {
                    "type": "string"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "terminal",
                  "direction"
                ],
                "properties": {
                  "terminal": {
                    "type": "string"
                  },
                  "direction": {
                    "type": "string",
                    "enum": [
                      "into",
                      "out"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ref",
                  "value"
                ],
                "properties": {
                  "ref": {
                    "type": "string"
                  },
                  "orientation": {
                    "type": "string",
                    "enum": [
                      "left-to-right",
                      "right-to-left",
                      "top-to-bottom",
                      "bottom-to-top"
                    ]
                  },
                  "value": {
                    "type": "string"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ref",
                  "value"
                ],
                "properties": {
                  "ref": {
                    "type": "string"
                  },
                  "orientation": {
                    "type": "string",
                    "enum": [
                      "left-to-right",
                      "right-to-left",
                      "top-to-bottom",
                      "bottom-to-top"
                    ]
                  },
                  "value": {
                    "type": "string"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ref",
                  "value"
                ],
                "properties": {
                  "ref": {
                    "type": "string"
                  },
                  "orientation": {
                    "type": "string",
                    "enum": [
                      "left-to-right",
                      "right-to-left",
                      "top-to-bottom",
                      "bottom-to-top"
                    ]
                  },
                  "value": {
                    "type": "string"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ref",
                  "value"
                ],
                "properties": {
                  "ref": {
                    "type": "string"
                  },
                  "orientation": {
                    "type": "string",
                    "enum": [
                      "left-to-right",
                      "right-to-left",
                      "top-to-bottom",
                      "bottom-to-top"
                    ]
                  },
                  "value": {
                    "type": "string"
                  },
                  "mode": {
                    "type": "string",
                    "enum": [
                      "dc",
                      "ac"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ref",
                  "value"
                ],
                "properties": {
                  "ref": {
                    "type": "string"
                  },
                  "orientation": {
                    "type": "string",
                    "enum": [
                      "left-to-right",
                      "right-to-left",
                      "top-to-bottom",
                      "bottom-to-top"
                    ]
                  },
                  "value": {
                    "type": "string"
                  },
                  "mode": {
                    "type": "string",
                    "enum": [
                      "dc",
                      "ac"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ref"
                ],
                "properties": {
                  "ref": {
                    "type": "string"
                  },
                  "orientation": {
                    "type": "string",
                    "enum": [
                      "left-to-right",
                      "right-to-left",
                      "top-to-bottom",
                      "bottom-to-top"
                    ]
                  },
                  "name": {
                    "type": "string"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ref"
                ],
                "properties": {
                  "ref": {
                    "type": "string"
                  },
                  "orientation": {
                    "type": "string",
                    "enum": [
                      "left-to-right",
                      "right-to-left",
                      "top-to-bottom",
                      "bottom-to-top"
                    ]
                  },
                  "name": {
                    "type": "string"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ref"
                ],
                "properties": {
                  "ref": {
                    "type": "string"
                  },
                  "orientation": {
                    "type": "string",
                    "enum": [
                      "left-to-right",
                      "right-to-left",
                      "top-to-bottom",
                      "bottom-to-top"
                    ]
                  },
                  "name": {
                    "type": "string"
                  },
                  "mode": {
                    "type": "string",
                    "enum": [
                      "normally-open",
                      "normally-closed"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ref",
                  "value"
                ],
                "properties": {
                  "ref": {
                    "type": "string"
                  },
                  "orientation": {
                    "type": "string",
                    "enum": [
                      "left-to-right",
                      "right-to-left",
                      "top-to-bottom",
                      "bottom-to-top"
                    ]
                  },
                  "value": {
                    "type": "string"
                  },
                  "mode": {
                    "type": "string",
                    "enum": [
                      "VCVS",
                      "VCCS",
                      "CCVS",
                      "CCCS"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ref"
                ],
                "properties": {
                  "ref": {
                    "type": "string"
                  },
                  "orientation": {
                    "type": "string",
                    "enum": [
                      "left-to-right",
                      "right-to-left",
                      "top-to-bottom",
                      "bottom-to-top"
                    ]
                  },
                  "name": {
                    "type": "string"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ref"
                ],
                "properties": {
                  "ref": {
                    "type": "string"
                  },
                  "orientation": {
                    "type": "string",
                    "enum": [
                      "left-to-right",
                      "right-to-left",
                      "top-to-bottom",
                      "bottom-to-top"
                    ]
                  },
                  "name": {
                    "type": "string"
                  },
                  "mode": {
                    "type": "string",
                    "enum": [
                      "npn",
                      "pnp"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ref"
                ],
                "properties": {
                  "ref": {
                    "type": "string"
                  },
                  "orientation": {
                    "type": "string",
                    "enum": [
                      "left-to-right",
                      "right-to-left",
                      "top-to-bottom",
                      "bottom-to-top"
                    ]
                  },
                  "name": {
                    "type": "string"
                  },
                  "mode": {
                    "type": "string",
                    "enum": [
                      "nmos",
                      "pmos"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ref"
                ],
                "properties": {
                  "ref": {
                    "type": "string"
                  },
                  "orientation": {
                    "type": "string",
                    "enum": [
                      "left-to-right",
                      "right-to-left",
                      "top-to-bottom",
                      "bottom-to-top"
                    ]
                  },
                  "inputs": {
                    "type": "string",
                    "enum": [
                      "2",
                      "3",
                      "4"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ref"
                ],
                "properties": {
                  "ref": {
                    "type": "string"
                  },
                  "orientation": {
                    "type": "string",
                    "enum": [
                      "left-to-right",
                      "right-to-left",
                      "top-to-bottom",
                      "bottom-to-top"
                    ]
                  },
                  "inputs": {
                    "type": "string",
                    "enum": [
                      "2",
                      "3",
                      "4"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ref"
                ],
                "properties": {
                  "ref": {
                    "type": "string"
                  },
                  "orientation": {
                    "type": "string",
                    "enum": [
                      "left-to-right",
                      "right-to-left",
                      "top-to-bottom",
                      "bottom-to-top"
                    ]
                  },
                  "inputs": {
                    "type": "string",
                    "enum": [
                      "2",
                      "3",
                      "4"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ref"
                ],
                "properties": {
                  "ref": {
                    "type": "string"
                  },
                  "orientation": {
                    "type": "string",
                    "enum": [
                      "left-to-right",
                      "right-to-left",
                      "top-to-bottom",
                      "bottom-to-top"
                    ]
                  },
                  "inputs": {
                    "type": "string",
                    "enum": [
                      "2",
                      "3",
                      "4"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ref"
                ],
                "properties": {
                  "ref": {
                    "type": "string"
                  },
                  "orientation": {
                    "type": "string",
                    "enum": [
                      "left-to-right",
                      "right-to-left",
                      "top-to-bottom",
                      "bottom-to-top"
                    ]
                  },
                  "inputs": {
                    "type": "string",
                    "enum": [
                      "2",
                      "3",
                      "4"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ref"
                ],
                "properties": {
                  "ref": {
                    "type": "string"
                  },
                  "orientation": {
                    "type": "string",
                    "enum": [
                      "left-to-right",
                      "right-to-left",
                      "top-to-bottom",
                      "bottom-to-top"
                    ]
                  },
                  "inputs": {
                    "type": "string",
                    "enum": [
                      "2",
                      "3",
                      "4"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ref"
                ],
                "properties": {
                  "ref": {
                    "type": "string"
                  },
                  "orientation": {
                    "type": "string",
                    "enum": [
                      "left-to-right",
                      "right-to-left",
                      "top-to-bottom",
                      "bottom-to-top"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ref"
                ],
                "properties": {
                  "ref": {
                    "type": "string"
                  },
                  "orientation": {
                    "type": "string",
                    "enum": [
                      "left-to-right",
                      "right-to-left",
                      "top-to-bottom",
                      "bottom-to-top"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ref"
                ],
                "properties": {
                  "ref": {
                    "type": "string"
                  },
                  "orientation": {
                    "type": "string",
                    "enum": [
                      "left-to-right",
                      "right-to-left",
                      "top-to-bottom",
                      "bottom-to-top"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ref"
                ],
                "properties": {
                  "ref": {
                    "type": "string"
                  },
                  "orientation": {
                    "type": "string",
                    "enum": [
                      "left-to-right",
                      "right-to-left",
                      "top-to-bottom",
                      "bottom-to-top"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ref"
                ],
                "properties": {
                  "ref": {
                    "type": "string"
                  },
                  "orientation": {
                    "type": "string",
                    "enum": [
                      "left-to-right",
                      "right-to-left",
                      "top-to-bottom",
                      "bottom-to-top"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ref",
                  "name"
                ],
                "properties": {
                  "ref": {
                    "type": "string"
                  },
                  "orientation": {
                    "type": "string",
                    "enum": [
                      "left-to-right",
                      "right-to-left",
                      "top-to-bottom",
                      "bottom-to-top"
                    ]
                  },
                  "name": {
                    "type": "string"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ref",
                  "name"
                ],
                "properties": {
                  "ref": {
                    "type": "string"
                  },
                  "orientation": {
                    "type": "string",
                    "enum": [
                      "left-to-right",
                      "right-to-left",
                      "top-to-bottom",
                      "bottom-to-top"
                    ]
                  },
                  "name": {
                    "type": "string"
                  }
                }
              }
            ]
          }
        }
      },
      "limits": {
        "maxComponents": 64,
        "maxNodes": 128,
        "maxRelations": 512,
        "maxAnnotations": 128
      }
    },
    {
      "type": "timing",
      "title": "Timing",
      "pluginVersion": "1.0.0",
      "namespace": "azeforge.timing",
      "bodySyntax": {
        "id": "azeforge.timing/v1",
        "version": "1.0.0"
      },
      "header": {
        "separator": "----",
        "fields": [
          {
            "key": "id",
            "valueType": "identifier",
            "required": false
          },
          {
            "key": "number",
            "valueType": "boolean",
            "required": false
          },
          {
            "key": "title",
            "valueType": "text",
            "required": true
          },
          {
            "key": "description",
            "valueType": "text",
            "required": false
          },
          {
            "key": "scale",
            "valueType": "enum",
            "required": false,
            "values": [
              "cycles",
              "time"
            ]
          },
          {
            "key": "unit",
            "valueType": "enum",
            "required": false,
            "values": [
              "ns",
              "µs",
              "ms",
              "s"
            ]
          }
        ]
      },
      "body": {
        "form": "record-list",
        "recordOpener": "-",
        "records": [
          {
            "kind": "signal",
            "fields": [
              {
                "key": "ref",
                "valueType": "identifier",
                "required": true
              },
              {
                "key": "clock",
                "valueType": "boolean",
                "required": false
              },
              {
                "key": "phase",
                "valueType": "decimal",
                "required": false
              },
              {
                "key": "width",
                "valueType": "integer",
                "required": false
              },
              {
                "key": "wave",
                "valueType": "text",
                "required": false
              },
              {
                "key": "intervals",
                "valueType": "record-list",
                "required": false
              }
            ],
            "groups": [
              {
                "of": "intervals",
                "fields": [
                  {
                    "key": "state",
                    "valueType": "enum",
                    "required": true,
                    "values": [
                      "low",
                      "high",
                      "unknown",
                      "impedance",
                      "bus",
                      "continue",
                      "rise",
                      "fall"
                    ]
                  },
                  {
                    "key": "duration",
                    "valueType": "decimal",
                    "required": true
                  },
                  {
                    "key": "value",
                    "valueType": "text",
                    "required": false
                  }
                ]
              }
            ]
          },
          {
            "kind": "group",
            "fields": [
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "signals",
                "valueType": "string-list",
                "required": true
              }
            ]
          },
          {
            "kind": "marker",
            "fields": [
              {
                "key": "at",
                "valueType": "decimal",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              }
            ]
          },
          {
            "kind": "arrow",
            "fields": [
              {
                "key": "from",
                "valueType": "text",
                "required": true
              },
              {
                "key": "to",
                "valueType": "text",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              }
            ]
          }
        ],
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "$id": "azeforge.timing/grammar/v1",
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "ref"
                ],
                "properties": {
                  "ref": {
                    "type": "string"
                  },
                  "clock": {
                    "type": "boolean"
                  },
                  "phase": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "width": {
                    "type": [
                      "string",
                      "integer"
                    ]
                  },
                  "wave": {
                    "type": "string"
                  },
                  "intervals": {
                    "type": "array"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "signals"
                ],
                "properties": {
                  "label": {
                    "type": "string"
                  },
                  "signals": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "at"
                ],
                "properties": {
                  "at": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "label": {
                    "type": "string"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "from",
                  "to"
                ],
                "properties": {
                  "from": {
                    "type": "string"
                  },
                  "to": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  }
                }
              }
            ]
          }
        }
      },
      "limits": {
        "maxSignals": 32,
        "maxIntervals": 256,
        "maxTotalIntervals": 2048,
        "maxGroups": 16,
        "maxGroupDepth": 2,
        "maxMarkers": 32,
        "maxArrows": 32,
        "maxTextCodePoints": 32,
        "maxWaveChars": 1024,
        "maxSpan": 512,
        "maxWidth": 64
      }
    },
    {
      "type": "diagram",
      "title": "Diagram",
      "pluginVersion": "1.0.0",
      "namespace": "azeforge.diagram",
      "bodySyntax": {
        "id": "azeforge.diagram/v1",
        "version": "1.0.0"
      },
      "header": {
        "separator": "----",
        "fields": [
          {
            "key": "id",
            "valueType": "identifier",
            "required": false
          },
          {
            "key": "number",
            "valueType": "boolean",
            "required": false
          },
          {
            "key": "title",
            "valueType": "text",
            "required": false
          },
          {
            "key": "description",
            "valueType": "text",
            "required": false
          },
          {
            "key": "mode",
            "valueType": "enum",
            "required": true,
            "values": [
              "flowchart",
              "graph",
              "tree",
              "architecture"
            ]
          },
          {
            "key": "flow",
            "valueType": "enum",
            "required": false,
            "values": [
              "top-to-bottom",
              "bottom-to-top",
              "left-to-right",
              "right-to-left"
            ]
          }
        ]
      },
      "body": {
        "form": "record-list",
        "recordOpener": "-",
        "records": [
          {
            "kind": "node",
            "fields": [
              {
                "key": "name",
                "valueType": "name",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "shape",
                "valueType": "enum",
                "required": false,
                "values": [
                  "rectangle",
                  "rounded",
                  "diamond",
                  "parallelogram",
                  "circle",
                  "hexagon",
                  "cylinder"
                ]
              },
              {
                "key": "parent",
                "valueType": "name",
                "required": false
              },
              {
                "key": "ports",
                "valueType": "record-list",
                "required": false
              }
            ],
            "groups": [
              {
                "of": "ports",
                "fields": [
                  {
                    "key": "name",
                    "valueType": "name",
                    "required": true
                  },
                  {
                    "key": "side",
                    "valueType": "enum",
                    "required": false,
                    "values": [
                      "left",
                      "right",
                      "top",
                      "bottom"
                    ]
                  }
                ]
              }
            ]
          },
          {
            "kind": "group",
            "fields": [
              {
                "key": "name",
                "valueType": "name",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "parent",
                "valueType": "name",
                "required": false
              }
            ]
          },
          {
            "kind": "edge",
            "fields": [
              {
                "key": "from",
                "valueType": "name",
                "required": true
              },
              {
                "key": "to",
                "valueType": "name",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "direction",
                "valueType": "enum",
                "required": false,
                "values": [
                  "directed",
                  "undirected"
                ]
              }
            ]
          }
        ],
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "$id": "azeforge.diagram/grammar/v1",
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "name"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "shape": {
                    "type": "string",
                    "enum": [
                      "rectangle",
                      "rounded",
                      "diamond",
                      "parallelogram",
                      "circle",
                      "hexagon",
                      "cylinder"
                    ]
                  },
                  "parent": {
                    "type": "string"
                  },
                  "ports": {
                    "type": "array"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "name"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "parent": {
                    "type": "string"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "from",
                  "to"
                ],
                "properties": {
                  "from": {
                    "type": "string"
                  },
                  "to": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "direction": {
                    "type": "string",
                    "enum": [
                      "directed",
                      "undirected"
                    ]
                  }
                }
              }
            ]
          }
        }
      },
      "limits": {
        "maxDeclarations": 512,
        "maxNodes": 128,
        "maxEdges": 256,
        "maxGroups": 32,
        "maxGroupDepth": 4,
        "maxPortsPerNode": 12,
        "maxPorts": 128,
        "maxParallelEdges": 4,
        "maxLabelCodePoints": 500,
        "maxLabelLines": 8,
        "maxTotalLabelCodePoints": 16384
      }
    },
    {
      "type": "sequence",
      "title": "Sequence",
      "pluginVersion": "1.0.0",
      "namespace": "azeforge.sequence",
      "bodySyntax": {
        "id": "azeforge.sequence/v1",
        "version": "1.0.0"
      },
      "header": {
        "separator": "----",
        "fields": [
          {
            "key": "id",
            "valueType": "identifier",
            "required": false
          },
          {
            "key": "number",
            "valueType": "boolean",
            "required": false
          },
          {
            "key": "title",
            "valueType": "text",
            "required": false
          },
          {
            "key": "description",
            "valueType": "text",
            "required": false
          }
        ]
      },
      "body": {
        "form": "keyed-sections",
        "fields": [
          {
            "key": "participants",
            "valueType": "record-list",
            "required": true
          },
          {
            "key": "timeline",
            "valueType": "record-list",
            "required": true
          }
        ],
        "groups": [
          {
            "of": "participants",
            "fields": [
              {
                "key": "name",
                "valueType": "name",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "kind",
                "valueType": "enum",
                "required": false,
                "values": [
                  "participant",
                  "actor"
                ]
              }
            ]
          },
          {
            "of": "timeline",
            "records": [
              {
                "kind": "message",
                "fields": [
                  {
                    "key": "kind",
                    "valueType": "enum",
                    "required": true,
                    "values": [
                      "message",
                      "alt",
                      "loop",
                      "note"
                    ]
                  },
                  {
                    "key": "form",
                    "valueType": "enum",
                    "required": false,
                    "values": [
                      "sync",
                      "async",
                      "return"
                    ]
                  },
                  {
                    "key": "from",
                    "valueType": "name",
                    "required": true
                  },
                  {
                    "key": "to",
                    "valueType": "name",
                    "required": true
                  },
                  {
                    "key": "text",
                    "valueType": "text",
                    "required": false
                  },
                  {
                    "key": "activate",
                    "valueType": "boolean",
                    "required": false
                  },
                  {
                    "key": "deactivate",
                    "valueType": "boolean",
                    "required": false
                  }
                ]
              },
              {
                "kind": "alt",
                "fields": [
                  {
                    "key": "kind",
                    "valueType": "enum",
                    "required": true,
                    "values": [
                      "message",
                      "alt",
                      "loop",
                      "note"
                    ]
                  },
                  {
                    "key": "divisions",
                    "valueType": "record-list",
                    "required": true
                  }
                ],
                "groups": [
                  {
                    "of": "divisions",
                    "fields": [
                      {
                        "key": "condition",
                        "valueType": "text",
                        "required": false
                      },
                      {
                        "key": "body",
                        "valueType": "record-list",
                        "required": true
                      }
                    ]
                  }
                ]
              },
              {
                "kind": "loop",
                "fields": [
                  {
                    "key": "kind",
                    "valueType": "enum",
                    "required": true,
                    "values": [
                      "message",
                      "alt",
                      "loop",
                      "note"
                    ]
                  },
                  {
                    "key": "condition",
                    "valueType": "text",
                    "required": false
                  },
                  {
                    "key": "body",
                    "valueType": "record-list",
                    "required": true
                  }
                ]
              },
              {
                "kind": "note",
                "fields": [
                  {
                    "key": "kind",
                    "valueType": "enum",
                    "required": true,
                    "values": [
                      "message",
                      "alt",
                      "loop",
                      "note"
                    ]
                  },
                  {
                    "key": "over",
                    "valueType": "string-list",
                    "required": true
                  },
                  {
                    "key": "text",
                    "valueType": "text",
                    "required": true
                  }
                ]
              }
            ]
          }
        ],
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "$id": "azeforge.sequence/grammar/v1",
          "type": "object",
          "additionalProperties": false,
          "required": [
            "participants",
            "timeline"
          ],
          "properties": {
            "participants": {
              "type": "array"
            },
            "timeline": {
              "type": "array"
            }
          }
        }
      },
      "limits": {
        "maxParticipants": 12,
        "maxTimelineItems": 256,
        "maxFragmentDepth": 4,
        "maxAltDivisions": 8,
        "maxNoteSpan": 2,
        "maxNoteTextChars": 1000,
        "maxNoteTextLines": 20
      }
    },
    {
      "type": "state",
      "title": "State",
      "pluginVersion": "1.0.0",
      "namespace": "azeforge.state",
      "bodySyntax": {
        "id": "azeforge.state/v1",
        "version": "1.0.0"
      },
      "header": {
        "separator": "----",
        "fields": [
          {
            "key": "id",
            "valueType": "identifier",
            "required": false
          },
          {
            "key": "number",
            "valueType": "boolean",
            "required": false
          },
          {
            "key": "title",
            "valueType": "text",
            "required": false
          },
          {
            "key": "description",
            "valueType": "text",
            "required": false
          }
        ]
      },
      "body": {
        "form": "record-list",
        "recordOpener": "-",
        "records": [
          {
            "kind": "state",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true,
                "values": [
                  "state",
                  "initial",
                  "final",
                  "transition"
                ]
              },
              {
                "key": "name",
                "valueType": "name",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "states",
                "valueType": "record-list",
                "required": false
              }
            ],
            "groups": [
              {
                "of": "states",
                "fields": [
                  {
                    "key": "kind",
                    "valueType": "enum",
                    "required": true,
                    "values": [
                      "state",
                      "initial",
                      "final"
                    ]
                  },
                  {
                    "key": "name",
                    "valueType": "name",
                    "required": true
                  },
                  {
                    "key": "label",
                    "valueType": "text",
                    "required": false
                  },
                  {
                    "key": "states",
                    "valueType": "record-list",
                    "required": false
                  }
                ]
              }
            ]
          },
          {
            "kind": "initial",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true,
                "values": [
                  "state",
                  "initial",
                  "final",
                  "transition"
                ]
              },
              {
                "key": "name",
                "valueType": "name",
                "required": true
              }
            ]
          },
          {
            "kind": "final",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true,
                "values": [
                  "state",
                  "initial",
                  "final",
                  "transition"
                ]
              },
              {
                "key": "name",
                "valueType": "name",
                "required": true
              }
            ]
          },
          {
            "kind": "transition",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true,
                "values": [
                  "state",
                  "initial",
                  "final",
                  "transition"
                ]
              },
              {
                "key": "from",
                "valueType": "name",
                "required": true
              },
              {
                "key": "to",
                "valueType": "name",
                "required": true
              },
              {
                "key": "trigger",
                "valueType": "text",
                "required": false
              },
              {
                "key": "guard",
                "valueType": "text",
                "required": false
              },
              {
                "key": "action",
                "valueType": "text",
                "required": false
              }
            ]
          }
        ],
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "$id": "azeforge.state/grammar/v1",
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "name"
                ],
                "properties": {
                  "kind": {
                    "const": "state"
                  },
                  "name": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "states": {
                    "type": "array"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "name"
                ],
                "properties": {
                  "kind": {
                    "const": "initial"
                  },
                  "name": {
                    "type": "string"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "name"
                ],
                "properties": {
                  "kind": {
                    "const": "final"
                  },
                  "name": {
                    "type": "string"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "from",
                  "to"
                ],
                "properties": {
                  "kind": {
                    "const": "transition"
                  },
                  "from": {
                    "type": "string"
                  },
                  "to": {
                    "type": "string"
                  },
                  "trigger": {
                    "type": "string"
                  },
                  "guard": {
                    "type": "string"
                  },
                  "action": {
                    "type": "string"
                  }
                }
              }
            ]
          }
        }
      },
      "limits": {
        "maxStates": 64,
        "maxDepth": 3,
        "maxTransitions": 128
      }
    },
    {
      "type": "entity",
      "title": "Entity",
      "pluginVersion": "1.0.0",
      "namespace": "azeforge.entity",
      "bodySyntax": {
        "id": "azeforge.entity/v1",
        "version": "1.0.0"
      },
      "header": {
        "separator": "----",
        "fields": [
          {
            "key": "id",
            "valueType": "identifier",
            "required": false
          },
          {
            "key": "number",
            "valueType": "boolean",
            "required": false
          },
          {
            "key": "title",
            "valueType": "text",
            "required": false
          },
          {
            "key": "description",
            "valueType": "text",
            "required": false
          }
        ]
      },
      "body": {
        "form": "record-list",
        "recordOpener": "-",
        "records": [
          {
            "kind": "entity",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true,
                "values": [
                  "entity",
                  "relationship"
                ]
              },
              {
                "key": "name",
                "valueType": "name",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "attributes",
                "valueType": "record-list",
                "required": false
              }
            ],
            "groups": [
              {
                "of": "attributes",
                "fields": [
                  {
                    "key": "name",
                    "valueType": "name",
                    "required": true
                  },
                  {
                    "key": "type",
                    "valueType": "text",
                    "required": false
                  },
                  {
                    "key": "keys",
                    "valueType": "string-list",
                    "required": false,
                    "values": [
                      "primary",
                      "foreign",
                      "unique"
                    ]
                  },
                  {
                    "key": "optional",
                    "valueType": "boolean",
                    "required": false
                  },
                  {
                    "key": "references",
                    "valueType": "record",
                    "required": false
                  }
                ]
              },
              {
                "of": "references",
                "fields": [
                  {
                    "key": "entity",
                    "valueType": "name",
                    "required": true
                  },
                  {
                    "key": "attribute",
                    "valueType": "name",
                    "required": true
                  }
                ]
              }
            ]
          },
          {
            "kind": "relationship",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true,
                "values": [
                  "entity",
                  "relationship"
                ]
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "first",
                "valueType": "record",
                "required": true
              },
              {
                "key": "second",
                "valueType": "record",
                "required": true
              }
            ],
            "groups": [
              {
                "of": "first",
                "fields": [
                  {
                    "key": "entity",
                    "valueType": "name",
                    "required": true
                  },
                  {
                    "key": "cardinality",
                    "valueType": "enum",
                    "required": true,
                    "values": [
                      "one",
                      "zero-or-one",
                      "many",
                      "one-or-many"
                    ]
                  },
                  {
                    "key": "role",
                    "valueType": "text",
                    "required": false
                  }
                ]
              },
              {
                "of": "second",
                "fields": [
                  {
                    "key": "entity",
                    "valueType": "name",
                    "required": true
                  },
                  {
                    "key": "cardinality",
                    "valueType": "enum",
                    "required": true,
                    "values": [
                      "one",
                      "zero-or-one",
                      "many",
                      "one-or-many"
                    ]
                  },
                  {
                    "key": "role",
                    "valueType": "text",
                    "required": false
                  }
                ]
              }
            ]
          }
        ],
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "$id": "azeforge.entity/grammar/v1",
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "name"
                ],
                "properties": {
                  "kind": {
                    "const": "entity"
                  },
                  "name": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "attributes": {
                    "type": "array"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "first",
                  "second"
                ],
                "properties": {
                  "kind": {
                    "const": "relationship"
                  },
                  "label": {
                    "type": "string"
                  },
                  "first": {
                    "type": "object"
                  },
                  "second": {
                    "type": "object"
                  }
                }
              }
            ]
          }
        }
      },
      "limits": {
        "maxEntities": 32,
        "maxAttributesPerEntity": 64,
        "maxRelationships": 64
      }
    },
    {
      "type": "class",
      "title": "Class",
      "pluginVersion": "1.0.0",
      "namespace": "azeforge.class",
      "bodySyntax": {
        "id": "azeforge.class/v1",
        "version": "1.0.0"
      },
      "header": {
        "separator": "----",
        "fields": [
          {
            "key": "id",
            "valueType": "identifier",
            "required": false
          },
          {
            "key": "number",
            "valueType": "boolean",
            "required": false
          },
          {
            "key": "title",
            "valueType": "text",
            "required": false
          },
          {
            "key": "description",
            "valueType": "text",
            "required": false
          }
        ]
      },
      "body": {
        "form": "record-list",
        "recordOpener": "-",
        "records": [
          {
            "kind": "class",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true,
                "values": [
                  "class",
                  "interface",
                  "relationship"
                ]
              },
              {
                "key": "name",
                "valueType": "name",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "abstract",
                "valueType": "boolean",
                "required": false
              },
              {
                "key": "attributes",
                "valueType": "record-list",
                "required": false
              },
              {
                "key": "operations",
                "valueType": "record-list",
                "required": false
              }
            ],
            "groups": [
              {
                "of": "attributes",
                "fields": [
                  {
                    "key": "name",
                    "valueType": "name",
                    "required": true
                  },
                  {
                    "key": "type",
                    "valueType": "text",
                    "required": false
                  },
                  {
                    "key": "visibility",
                    "valueType": "enum",
                    "required": false,
                    "values": [
                      "public",
                      "private",
                      "protected",
                      "package"
                    ]
                  },
                  {
                    "key": "static",
                    "valueType": "boolean",
                    "required": false
                  }
                ]
              },
              {
                "of": "operations",
                "fields": [
                  {
                    "key": "name",
                    "valueType": "name",
                    "required": true
                  },
                  {
                    "key": "visibility",
                    "valueType": "enum",
                    "required": false,
                    "values": [
                      "public",
                      "private",
                      "protected",
                      "package"
                    ]
                  },
                  {
                    "key": "static",
                    "valueType": "boolean",
                    "required": false
                  },
                  {
                    "key": "parameters",
                    "valueType": "record-list",
                    "required": false
                  },
                  {
                    "key": "return-type",
                    "valueType": "text",
                    "required": false
                  }
                ]
              },
              {
                "of": "parameters",
                "fields": [
                  {
                    "key": "name",
                    "valueType": "name",
                    "required": true
                  },
                  {
                    "key": "type",
                    "valueType": "text",
                    "required": false
                  }
                ]
              }
            ]
          },
          {
            "kind": "interface",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true,
                "values": [
                  "class",
                  "interface",
                  "relationship"
                ]
              },
              {
                "key": "name",
                "valueType": "name",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "operations",
                "valueType": "record-list",
                "required": false
              }
            ],
            "groups": [
              {
                "of": "operations",
                "fields": [
                  {
                    "key": "name",
                    "valueType": "name",
                    "required": true
                  },
                  {
                    "key": "visibility",
                    "valueType": "enum",
                    "required": false,
                    "values": [
                      "public",
                      "private",
                      "protected",
                      "package"
                    ]
                  },
                  {
                    "key": "static",
                    "valueType": "boolean",
                    "required": false
                  },
                  {
                    "key": "parameters",
                    "valueType": "record-list",
                    "required": false
                  },
                  {
                    "key": "return-type",
                    "valueType": "text",
                    "required": false
                  }
                ]
              },
              {
                "of": "parameters",
                "fields": [
                  {
                    "key": "name",
                    "valueType": "name",
                    "required": true
                  },
                  {
                    "key": "type",
                    "valueType": "text",
                    "required": false
                  }
                ]
              }
            ]
          },
          {
            "kind": "relationship",
            "fields": [
              {
                "key": "kind",
                "valueType": "enum",
                "required": true,
                "values": [
                  "class",
                  "interface",
                  "relationship"
                ]
              },
              {
                "key": "form",
                "valueType": "enum",
                "required": true,
                "values": [
                  "inheritance",
                  "implementation",
                  "association",
                  "aggregation",
                  "composition"
                ]
              },
              {
                "key": "from",
                "valueType": "name",
                "required": true
              },
              {
                "key": "to",
                "valueType": "name",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "from-multiplicity",
                "valueType": "enum",
                "required": false,
                "values": [
                  "one",
                  "zero-or-one",
                  "many",
                  "one-or-many"
                ]
              },
              {
                "key": "to-multiplicity",
                "valueType": "enum",
                "required": false,
                "values": [
                  "one",
                  "zero-or-one",
                  "many",
                  "one-or-many"
                ]
              }
            ]
          }
        ],
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "$id": "azeforge.class/grammar/v1",
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "name"
                ],
                "properties": {
                  "kind": {
                    "const": "class"
                  },
                  "name": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "abstract": {
                    "type": "boolean"
                  },
                  "attributes": {
                    "type": "array"
                  },
                  "operations": {
                    "type": "array"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "name"
                ],
                "properties": {
                  "kind": {
                    "const": "interface"
                  },
                  "name": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "operations": {
                    "type": "array"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "kind",
                  "form",
                  "from",
                  "to"
                ],
                "properties": {
                  "kind": {
                    "const": "relationship"
                  },
                  "form": {
                    "type": "string",
                    "enum": [
                      "inheritance",
                      "implementation",
                      "association",
                      "aggregation",
                      "composition"
                    ]
                  },
                  "from": {
                    "type": "string"
                  },
                  "to": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "from-multiplicity": {
                    "type": "string",
                    "enum": [
                      "one",
                      "zero-or-one",
                      "many",
                      "one-or-many"
                    ]
                  },
                  "to-multiplicity": {
                    "type": "string",
                    "enum": [
                      "one",
                      "zero-or-one",
                      "many",
                      "one-or-many"
                    ]
                  }
                }
              }
            ]
          }
        }
      },
      "limits": {
        "maxClassifiers": 32,
        "maxAttributesPerClass": 64,
        "maxOperationsPerClass": 64,
        "maxParametersPerOperation": 16,
        "maxRelationships": 64
      }
    },
    {
      "type": "control",
      "title": "Control signal-flow diagrams",
      "pluginVersion": "1.0.0",
      "namespace": "azeforge.control",
      "bodySyntax": {
        "id": "azeforge.control/v1",
        "version": "1.0.0"
      },
      "header": {
        "separator": "----",
        "fields": [
          {
            "key": "flow",
            "valueType": "enum",
            "required": false,
            "values": [
              "top-to-bottom",
              "bottom-to-top",
              "left-to-right",
              "right-to-left"
            ]
          },
          {
            "key": "id",
            "valueType": "identifier",
            "required": false
          },
          {
            "key": "number",
            "valueType": "boolean",
            "required": false
          },
          {
            "key": "title",
            "valueType": "text",
            "required": false
          },
          {
            "key": "description",
            "valueType": "text",
            "required": false
          }
        ]
      },
      "body": {
        "form": "record-list",
        "recordOpener": "-",
        "records": [
          {
            "kind": "block",
            "fields": [
              {
                "key": "name",
                "valueType": "name",
                "required": true
              },
              {
                "key": "tf",
                "valueType": "text",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              }
            ]
          },
          {
            "kind": "sum",
            "fields": [
              {
                "key": "name",
                "valueType": "name",
                "required": true
              },
              {
                "key": "signs",
                "valueType": "string-list",
                "required": true,
                "values": [
                  "+",
                  "-"
                ]
              }
            ]
          },
          {
            "kind": "input",
            "fields": [
              {
                "key": "name",
                "valueType": "name",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": true
              }
            ]
          },
          {
            "kind": "output",
            "fields": [
              {
                "key": "name",
                "valueType": "name",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": true
              }
            ]
          },
          {
            "kind": "edge",
            "fields": [
              {
                "key": "from",
                "valueType": "name",
                "required": true
              },
              {
                "key": "to",
                "valueType": "name",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              }
            ]
          }
        ],
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "$id": "azeforge.control/grammar/v1",
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "name",
                  "tf"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "tf": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "name",
                  "signs"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "signs": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "name",
                  "label"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "name",
                  "label"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "from",
                  "to"
                ],
                "properties": {
                  "from": {
                    "type": "string"
                  },
                  "to": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  }
                }
              }
            ]
          }
        }
      },
      "limits": {
        "maxDeclarations": 256,
        "maxBlocks": 64,
        "maxSums": 32,
        "maxStubs": 32,
        "maxEdges": 128,
        "maxSignsPerSum": 8,
        "maxLabelCodePoints": 500,
        "maxTotalLabelCodePoints": 16384
      }
    },
    {
      "type": "free-body",
      "title": "Free-body diagrams",
      "pluginVersion": "1.0.0",
      "namespace": "azeforge.free-body",
      "bodySyntax": {
        "id": "azeforge.free-body/v1",
        "version": "1.0.0"
      },
      "header": {
        "separator": "----",
        "fields": [
          {
            "key": "scale",
            "valueType": "decimal",
            "required": false
          },
          {
            "key": "id",
            "valueType": "identifier",
            "required": false
          },
          {
            "key": "number",
            "valueType": "boolean",
            "required": false
          },
          {
            "key": "title",
            "valueType": "text",
            "required": false
          },
          {
            "key": "description",
            "valueType": "text",
            "required": false
          },
          {
            "key": "width",
            "valueType": "integer",
            "required": false
          },
          {
            "key": "height",
            "valueType": "integer",
            "required": false
          },
          {
            "key": "bounds",
            "valueType": "record",
            "required": false
          }
        ],
        "groups": [
          {
            "of": "bounds",
            "fields": [
              {
                "key": "min-x",
                "valueType": "decimal",
                "required": true
              },
              {
                "key": "min-y",
                "valueType": "decimal",
                "required": true
              },
              {
                "key": "max-x",
                "valueType": "decimal",
                "required": true
              },
              {
                "key": "max-y",
                "valueType": "decimal",
                "required": true
              }
            ]
          }
        ]
      },
      "body": {
        "form": "record-list",
        "recordOpener": "-",
        "records": [
          {
            "kind": "block",
            "fields": [
              {
                "key": "name",
                "valueType": "name",
                "required": true
              },
              {
                "key": "x",
                "valueType": "decimal",
                "required": true
              },
              {
                "key": "y",
                "valueType": "decimal",
                "required": true
              },
              {
                "key": "width",
                "valueType": "decimal",
                "required": true
              },
              {
                "key": "height",
                "valueType": "decimal",
                "required": true
              },
              {
                "key": "angle",
                "valueType": "decimal",
                "required": false
              },
              {
                "key": "visible",
                "valueType": "boolean",
                "required": false
              }
            ]
          },
          {
            "kind": "circle",
            "fields": [
              {
                "key": "name",
                "valueType": "name",
                "required": true
              },
              {
                "key": "x",
                "valueType": "decimal",
                "required": true
              },
              {
                "key": "y",
                "valueType": "decimal",
                "required": true
              },
              {
                "key": "radius",
                "valueType": "decimal",
                "required": true
              },
              {
                "key": "visible",
                "valueType": "boolean",
                "required": false
              }
            ]
          },
          {
            "kind": "polygon",
            "fields": [
              {
                "key": "name",
                "valueType": "name",
                "required": true
              },
              {
                "key": "vertices",
                "valueType": "string-list",
                "required": true
              },
              {
                "key": "visible",
                "valueType": "boolean",
                "required": false
              }
            ]
          },
          {
            "kind": "particle",
            "fields": [
              {
                "key": "name",
                "valueType": "name",
                "required": true
              },
              {
                "key": "x",
                "valueType": "decimal",
                "required": true
              },
              {
                "key": "y",
                "valueType": "decimal",
                "required": true
              },
              {
                "key": "visible",
                "valueType": "boolean",
                "required": false
              }
            ]
          },
          {
            "kind": "point",
            "fields": [
              {
                "key": "name",
                "valueType": "name",
                "required": true
              },
              {
                "key": "x",
                "valueType": "decimal",
                "required": true
              },
              {
                "key": "y",
                "valueType": "decimal",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "visible",
                "valueType": "boolean",
                "required": false
              }
            ]
          },
          {
            "kind": "line",
            "fields": [
              {
                "key": "name",
                "valueType": "name",
                "required": true
              },
              {
                "key": "from",
                "valueType": "name",
                "required": true
              },
              {
                "key": "to",
                "valueType": "name",
                "required": true
              },
              {
                "key": "visible",
                "valueType": "boolean",
                "required": false
              },
              {
                "key": "style",
                "valueType": "enum",
                "required": false,
                "values": [
                  "solid",
                  "dashed"
                ]
              }
            ]
          },
          {
            "kind": "force",
            "fields": [
              {
                "key": "at",
                "valueType": "record",
                "required": true
              },
              {
                "key": "angle",
                "valueType": "decimal",
                "required": false
              },
              {
                "key": "parallel-to",
                "valueType": "name",
                "required": false
              },
              {
                "key": "perpendicular-to",
                "valueType": "name",
                "required": false
              },
              {
                "key": "magnitude",
                "valueType": "decimal",
                "required": false
              },
              {
                "key": "length",
                "valueType": "decimal",
                "required": false
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              }
            ]
          },
          {
            "kind": "moment",
            "fields": [
              {
                "key": "at",
                "valueType": "record",
                "required": true
              },
              {
                "key": "direction",
                "valueType": "enum",
                "required": true,
                "values": [
                  "cw",
                  "ccw"
                ]
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              }
            ]
          },
          {
            "kind": "axes",
            "fields": [
              {
                "key": "at",
                "valueType": "record",
                "required": true
              },
              {
                "key": "angle",
                "valueType": "decimal",
                "required": false
              },
              {
                "key": "x-label",
                "valueType": "text",
                "required": false
              },
              {
                "key": "y-label",
                "valueType": "text",
                "required": false
              }
            ]
          },
          {
            "kind": "angle-mark",
            "fields": [
              {
                "key": "first",
                "valueType": "name",
                "required": true
              },
              {
                "key": "vertex",
                "valueType": "name",
                "required": true
              },
              {
                "key": "third",
                "valueType": "name",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": false
              }
            ]
          },
          {
            "kind": "dimension",
            "fields": [
              {
                "key": "from",
                "valueType": "record",
                "required": true
              },
              {
                "key": "to",
                "valueType": "record",
                "required": true
              },
              {
                "key": "label",
                "valueType": "text",
                "required": true
              }
            ]
          }
        ],
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "$id": "azeforge.free-body/grammar/v1",
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "name",
                  "x",
                  "y",
                  "width",
                  "height"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "x": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "y": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "width": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "height": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "angle": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "visible": {
                    "type": "boolean"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "name",
                  "x",
                  "y",
                  "radius"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "x": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "y": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "radius": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "visible": {
                    "type": "boolean"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "name",
                  "vertices"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "vertices": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "visible": {
                    "type": "boolean"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "name",
                  "x",
                  "y"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "x": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "y": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "visible": {
                    "type": "boolean"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "name",
                  "x",
                  "y"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "x": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "y": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "label": {
                    "type": "string"
                  },
                  "visible": {
                    "type": "boolean"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "name",
                  "from",
                  "to"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "from": {
                    "type": "string"
                  },
                  "to": {
                    "type": "string"
                  },
                  "visible": {
                    "type": "boolean"
                  },
                  "style": {
                    "type": "string",
                    "enum": [
                      "solid",
                      "dashed"
                    ]
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "at"
                ],
                "properties": {
                  "at": {
                    "type": "object"
                  },
                  "angle": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "parallel-to": {
                    "type": "string"
                  },
                  "perpendicular-to": {
                    "type": "string"
                  },
                  "magnitude": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "length": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "label": {
                    "type": "string"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "at",
                  "direction"
                ],
                "properties": {
                  "at": {
                    "type": "object"
                  },
                  "direction": {
                    "type": "string",
                    "enum": [
                      "cw",
                      "ccw"
                    ]
                  },
                  "label": {
                    "type": "string"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "at"
                ],
                "properties": {
                  "at": {
                    "type": "object"
                  },
                  "angle": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "x-label": {
                    "type": "string"
                  },
                  "y-label": {
                    "type": "string"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "first",
                  "vertex",
                  "third"
                ],
                "properties": {
                  "first": {
                    "type": "string"
                  },
                  "vertex": {
                    "type": "string"
                  },
                  "third": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "from",
                  "to",
                  "label"
                ],
                "properties": {
                  "from": {
                    "type": "object"
                  },
                  "to": {
                    "type": "object"
                  },
                  "label": {
                    "type": "string"
                  }
                }
              }
            ]
          }
        }
      },
      "limits": {
        "maxDeclarations": 256,
        "maxPolygonVertices": 64,
        "maxLabelChars": 500,
        "maxCoordinateMagnitude": 1000000,
        "maxDimensionPx": 4096
      }
    },
    {
      "type": "figure",
      "title": "Figure",
      "pluginVersion": "1.0.0",
      "namespace": "azeforge.figure",
      "bodySyntax": {
        "id": "azeforge.figure/v1",
        "version": "1.0.0"
      },
      "header": {
        "separator": "----",
        "fields": [
          {
            "key": "id",
            "valueType": "identifier",
            "required": false
          },
          {
            "key": "number",
            "valueType": "boolean",
            "required": false
          },
          {
            "key": "caption",
            "valueType": "prose",
            "required": false
          }
        ]
      },
      "body": {
        "form": "keyed-sections",
        "fields": [
          {
            "key": "children",
            "valueType": "record-list",
            "required": true
          }
        ],
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "$id": "azeforge.figure/grammar/v1",
          "type": "object",
          "additionalProperties": false,
          "required": [
            "children"
          ],
          "properties": {
            "children": {
              "type": "array"
            }
          }
        }
      },
      "limits": {}
    },
    {
      "type": "bibliography",
      "title": "Bibliography",
      "pluginVersion": "1.0.0",
      "namespace": "azeforge.citation",
      "bodySyntax": {
        "id": "azeforge.bibliography/v1",
        "version": "1.0.0"
      },
      "header": {
        "separator": "----",
        "fields": [
          {
            "key": "id",
            "valueType": "identifier",
            "required": false
          },
          {
            "key": "number",
            "valueType": "boolean",
            "required": false
          },
          {
            "key": "caption",
            "valueType": "prose",
            "required": false
          }
        ]
      },
      "body": {
        "form": "record-list",
        "recordOpener": "-",
        "records": [
          {
            "kind": "entry",
            "fields": [
              {
                "key": "key",
                "valueType": "identifier",
                "required": true
              },
              {
                "key": "type",
                "valueType": "enum",
                "required": true,
                "values": [
                  "article",
                  "book",
                  "chapter",
                  "report",
                  "thesis",
                  "web",
                  "software",
                  "standard",
                  "other"
                ]
              },
              {
                "key": "title",
                "valueType": "text",
                "required": true
              },
              {
                "key": "authors",
                "valueType": "record-list",
                "required": false
              },
              {
                "key": "year",
                "valueType": "text",
                "required": false
              },
              {
                "key": "venue",
                "valueType": "text",
                "required": false
              },
              {
                "key": "publisher",
                "valueType": "text",
                "required": false
              },
              {
                "key": "edition",
                "valueType": "text",
                "required": false
              },
              {
                "key": "pages",
                "valueType": "text",
                "required": false
              },
              {
                "key": "url",
                "valueType": "text",
                "required": false
              },
              {
                "key": "doi",
                "valueType": "text",
                "required": false
              },
              {
                "key": "note",
                "valueType": "text",
                "required": false
              }
            ],
            "groups": [
              {
                "of": "authors",
                "fields": [
                  {
                    "key": "name",
                    "valueType": "text",
                    "required": true
                  },
                  {
                    "key": "family",
                    "valueType": "text",
                    "required": false
                  }
                ]
              }
            ]
          }
        ],
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "$id": "azeforge.bibliography/grammar/v1",
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "key",
                  "type",
                  "title"
                ],
                "properties": {
                  "key": {
                    "type": "string"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "article",
                      "book",
                      "chapter",
                      "report",
                      "thesis",
                      "web",
                      "software",
                      "standard",
                      "other"
                    ]
                  },
                  "title": {
                    "type": "string"
                  },
                  "authors": {
                    "type": "array"
                  },
                  "year": {
                    "type": "string"
                  },
                  "venue": {
                    "type": "string"
                  },
                  "publisher": {
                    "type": "string"
                  },
                  "edition": {
                    "type": "string"
                  },
                  "pages": {
                    "type": "string"
                  },
                  "url": {
                    "type": "string"
                  },
                  "doi": {
                    "type": "string"
                  },
                  "note": {
                    "type": "string"
                  }
                }
              }
            ]
          }
        }
      },
      "limits": {
        "maxEntries": 512
      }
    },
    {
      "type": "algorithm",
      "title": "Algorithm",
      "pluginVersion": "1.0.0",
      "namespace": "azeforge.algorithm",
      "bodySyntax": {
        "id": "azeforge.algorithm/v1",
        "version": "1.0.0"
      },
      "header": {
        "separator": "----",
        "fields": [
          {
            "key": "id",
            "valueType": "identifier",
            "required": false
          },
          {
            "key": "number",
            "valueType": "boolean",
            "required": false
          },
          {
            "key": "caption",
            "valueType": "prose",
            "required": false
          }
        ]
      },
      "body": {
        "form": "keyed-sections",
        "fields": [
          {
            "key": "procedure",
            "valueType": "name",
            "required": true
          },
          {
            "key": "parameters",
            "valueType": "string-list",
            "required": false
          },
          {
            "key": "steps",
            "valueType": "record-list",
            "required": true
          }
        ],
        "groups": [
          {
            "of": "steps",
            "records": [
              {
                "kind": "assign",
                "fields": [
                  {
                    "key": "assign",
                    "valueType": "expression",
                    "required": true
                  }
                ]
              },
              {
                "kind": "if",
                "fields": [
                  {
                    "key": "if",
                    "valueType": "expression",
                    "required": true
                  },
                  {
                    "key": "do",
                    "valueType": "record-list",
                    "required": false
                  }
                ],
                "groups": [
                  {
                    "of": "do",
                    "records": [
                      {
                        "kind": "assign",
                        "fields": [
                          {
                            "key": "assign",
                            "valueType": "expression",
                            "required": true
                          }
                        ]
                      },
                      {
                        "kind": "if",
                        "fields": [
                          {
                            "key": "if",
                            "valueType": "expression",
                            "required": true
                          }
                        ]
                      },
                      {
                        "kind": "for",
                        "fields": [
                          {
                            "key": "for",
                            "valueType": "expression",
                            "required": true
                          }
                        ]
                      },
                      {
                        "kind": "while",
                        "fields": [
                          {
                            "key": "while",
                            "valueType": "expression",
                            "required": true
                          }
                        ]
                      },
                      {
                        "kind": "return",
                        "fields": [
                          {
                            "key": "return",
                            "valueType": "expression",
                            "required": true
                          }
                        ]
                      },
                      {
                        "kind": "text",
                        "fields": [
                          {
                            "key": "text",
                            "valueType": "prose",
                            "required": true
                          }
                        ]
                      }
                    ]
                  }
                ]
              },
              {
                "kind": "for",
                "fields": [
                  {
                    "key": "for",
                    "valueType": "expression",
                    "required": true
                  },
                  {
                    "key": "do",
                    "valueType": "record-list",
                    "required": false
                  }
                ],
                "groups": [
                  {
                    "of": "do",
                    "records": [
                      {
                        "kind": "assign",
                        "fields": [
                          {
                            "key": "assign",
                            "valueType": "expression",
                            "required": true
                          }
                        ]
                      },
                      {
                        "kind": "if",
                        "fields": [
                          {
                            "key": "if",
                            "valueType": "expression",
                            "required": true
                          }
                        ]
                      },
                      {
                        "kind": "for",
                        "fields": [
                          {
                            "key": "for",
                            "valueType": "expression",
                            "required": true
                          }
                        ]
                      },
                      {
                        "kind": "while",
                        "fields": [
                          {
                            "key": "while",
                            "valueType": "expression",
                            "required": true
                          }
                        ]
                      },
                      {
                        "kind": "return",
                        "fields": [
                          {
                            "key": "return",
                            "valueType": "expression",
                            "required": true
                          }
                        ]
                      },
                      {
                        "kind": "text",
                        "fields": [
                          {
                            "key": "text",
                            "valueType": "prose",
                            "required": true
                          }
                        ]
                      }
                    ]
                  }
                ]
              },
              {
                "kind": "while",
                "fields": [
                  {
                    "key": "while",
                    "valueType": "expression",
                    "required": true
                  },
                  {
                    "key": "do",
                    "valueType": "record-list",
                    "required": false
                  }
                ],
                "groups": [
                  {
                    "of": "do",
                    "records": [
                      {
                        "kind": "assign",
                        "fields": [
                          {
                            "key": "assign",
                            "valueType": "expression",
                            "required": true
                          }
                        ]
                      },
                      {
                        "kind": "if",
                        "fields": [
                          {
                            "key": "if",
                            "valueType": "expression",
                            "required": true
                          }
                        ]
                      },
                      {
                        "kind": "for",
                        "fields": [
                          {
                            "key": "for",
                            "valueType": "expression",
                            "required": true
                          }
                        ]
                      },
                      {
                        "kind": "while",
                        "fields": [
                          {
                            "key": "while",
                            "valueType": "expression",
                            "required": true
                          }
                        ]
                      },
                      {
                        "kind": "return",
                        "fields": [
                          {
                            "key": "return",
                            "valueType": "expression",
                            "required": true
                          }
                        ]
                      },
                      {
                        "kind": "text",
                        "fields": [
                          {
                            "key": "text",
                            "valueType": "prose",
                            "required": true
                          }
                        ]
                      }
                    ]
                  }
                ]
              },
              {
                "kind": "return",
                "fields": [
                  {
                    "key": "return",
                    "valueType": "expression",
                    "required": true
                  }
                ]
              },
              {
                "kind": "text",
                "fields": [
                  {
                    "key": "text",
                    "valueType": "prose",
                    "required": true
                  }
                ]
              }
            ]
          }
        ],
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "$id": "azeforge.algorithm/grammar/v1",
          "type": "object",
          "additionalProperties": false,
          "required": [
            "procedure",
            "steps"
          ],
          "properties": {
            "procedure": {
              "type": "string"
            },
            "parameters": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "steps": {
              "type": "array"
            }
          }
        }
      },
      "limits": {
        "maxStatements": 256,
        "maxNestingDepth": 8,
        "maxParameters": 32,
        "maxExpressionChars": 200
      }
    },
    {
      "type": "statement",
      "title": "Statement",
      "pluginVersion": "1.0.0",
      "namespace": "azeforge.statement",
      "bodySyntax": {
        "id": "azeforge.statement/v1",
        "version": "1.0.0"
      },
      "header": {
        "separator": "----",
        "fields": [
          {
            "key": "id",
            "valueType": "identifier",
            "required": false
          },
          {
            "key": "number",
            "valueType": "boolean",
            "required": false
          },
          {
            "key": "caption",
            "valueType": "prose",
            "required": false
          },
          {
            "key": "kind",
            "valueType": "enum",
            "required": true,
            "values": [
              "theorem",
              "definition",
              "lemma",
              "corollary",
              "proposition",
              "remark"
            ]
          }
        ]
      },
      "body": {
        "form": "keyed-sections",
        "fields": [
          {
            "key": "text",
            "valueType": "prose",
            "required": true
          },
          {
            "key": "proof",
            "valueType": "prose",
            "required": false
          }
        ],
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "$id": "azeforge.statement/grammar/v1",
          "type": "object",
          "additionalProperties": false,
          "required": [
            "text"
          ],
          "properties": {
            "text": {
              "type": "string"
            },
            "proof": {
              "type": "string"
            }
          }
        }
      },
      "limits": {
        "maxMarkdownChars": 20000
      }
    },
    {
      "type": "example",
      "title": "Worked example",
      "pluginVersion": "1.0.0",
      "namespace": "azeforge.example",
      "bodySyntax": {
        "id": "azeforge.example/v1",
        "version": "1.0.0"
      },
      "header": {
        "separator": "----",
        "fields": [
          {
            "key": "id",
            "valueType": "identifier",
            "required": false
          },
          {
            "key": "number",
            "valueType": "boolean",
            "required": false
          },
          {
            "key": "caption",
            "valueType": "prose",
            "required": false
          }
        ]
      },
      "body": {
        "form": "keyed-sections",
        "fields": [
          {
            "key": "problem",
            "valueType": "prose",
            "required": true
          },
          {
            "key": "givens",
            "valueType": "string-list",
            "required": false
          },
          {
            "key": "steps",
            "valueType": "record-list",
            "required": true
          },
          {
            "key": "result",
            "valueType": "prose",
            "required": false
          }
        ],
        "groups": [
          {
            "of": "steps",
            "fields": [
              {
                "key": "text",
                "valueType": "prose",
                "required": true
              }
            ]
          }
        ],
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "$id": "azeforge.example/grammar/v1",
          "type": "object",
          "additionalProperties": false,
          "required": [
            "problem",
            "steps"
          ],
          "properties": {
            "problem": {
              "type": "string"
            },
            "givens": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "steps": {
              "type": "array"
            },
            "result": {
              "type": "string"
            }
          }
        }
      },
      "limits": {
        "maxSteps": 64,
        "maxGivens": 64,
        "maxMarkdownChars": 20000
      }
    }
  ],
  "limits": {
    "diagnostics": {
      "perBlock": 20,
      "perDocument": 200,
      "policy": "lowerable-only"
    },
    "nesting": {
      "maxDepth": 8
    },
    "images": {
      "maxBytes": 8388608,
      "maxDimensionPx": 10000,
      "maxPixels": 25000000
    }
  }
}
