{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "Vega Visualization Specification Language",
  "defs": {
    "autosize": {
      "oneOf": [
        {
          "enum": [
            "pad",
            "fit",
            "fit-x",
            "fit-y",
            "none"
          ]
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "enum": [
                "pad",
                "fit",
                "fit-x",
                "fit-y",
                "none"
              ]
            },
            "resize": {
              "type": "boolean"
            },
            "contains": {
              "enum": [
                "content",
                "padding"
              ]
            }
          },
          "required": [
            "type"
          ],
          "additionalProperties": false
        }
      ],
      "default": "pad"
    },
    "axis": {
      "type": "object",
      "properties": {
        "orient": {
          "enum": [
            "top",
            "bottom",
            "left",
            "right"
          ]
        },
        "scale": {
          "type": "string"
        },
        "format": {
          "$ref": "#/refs/stringOrSignal"
        },
        "minExtent": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "maxExtent": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "offset": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "position": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "bandPosition": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "values": {
          "$ref": "#/refs/arrayOrSignal"
        },
        "zindex": {
          "type": "number"
        },
        "title": {
          "$ref": "#/refs/stringOrSignal"
        },
        "titlePadding": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "titleAlign": {
          "oneOf": [
            {
              "enum": [
                "left",
                "right",
                "center"
              ]
            },
            {
              "$ref": "#/refs/alignValue"
            }
          ]
        },
        "titleAngle": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "titleX": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "titleY": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "titleBaseline": {
          "oneOf": [
            {
              "enum": [
                "top",
                "middle",
                "bottom",
                "alphabetic"
              ]
            },
            {
              "$ref": "#/refs/baselineValue"
            }
          ]
        },
        "titleColor": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/colorValue"
            }
          ]
        },
        "titleFont": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/stringValue"
            }
          ]
        },
        "titleFontSize": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "titleFontWeight": {
          "oneOf": [
            {
              "enum": [
                null,
                "normal",
                "bold",
                "lighter",
                "bolder",
                "100",
                "200",
                "300",
                "400",
                "500",
                "600",
                "700",
                "800",
                "900",
                100,
                200,
                300,
                400,
                500,
                600,
                700,
                800,
                900
              ]
            },
            {
              "$ref": "#/refs/fontWeightValue"
            }
          ]
        },
        "titleLimit": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "titleOpacity": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "domain": {
          "type": "boolean"
        },
        "domainColor": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/colorValue"
            }
          ]
        },
        "domainOpacity": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "domainWidth": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "ticks": {
          "type": "boolean"
        },
        "tickColor": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/colorValue"
            }
          ]
        },
        "tickOffset": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "tickOpacity": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "tickRound": {
          "oneOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/refs/booleanValue"
            }
          ]
        },
        "tickSize": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "tickWidth": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "tickCount": {
          "$ref": "#/refs/tickCount"
        },
        "tickExtra": {
          "$ref": "#/refs/booleanOrSignal"
        },
        "grid": {
          "type": "boolean"
        },
        "gridScale": {
          "type": "string"
        },
        "gridColor": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/colorValue"
            }
          ]
        },
        "gridDash": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "number"
              }
            },
            {
              "$ref": "#/refs/arrayValue"
            }
          ]
        },
        "gridOpacity": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "gridWidth": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "labels": {
          "type": "boolean"
        },
        "labelAlign": {
          "oneOf": [
            {
              "enum": [
                "left",
                "right",
                "center"
              ]
            },
            {
              "$ref": "#/refs/alignValue"
            }
          ]
        },
        "labelBaseline": {
          "oneOf": [
            {
              "enum": [
                "top",
                "middle",
                "bottom",
                "alphabetic"
              ]
            },
            {
              "$ref": "#/refs/baselineValue"
            }
          ]
        },
        "labelBound": {
          "oneOf": [
            {
              "type": "boolean"
            },
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "labelFlush": {
          "oneOf": [
            {
              "type": "boolean"
            },
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "labelFlushOffset": {
          "$ref": "#/refs/numberOrSignal"
        },
        "labelOverlap": {
          "$ref": "#/refs/labelOverlap"
        },
        "labelAngle": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "labelColor": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/colorValue"
            }
          ]
        },
        "labelFont": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/stringValue"
            }
          ]
        },
        "labelFontSize": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "labelFontWeight": {
          "oneOf": [
            {
              "enum": [
                null,
                "normal",
                "bold",
                "lighter",
                "bolder",
                "100",
                "200",
                "300",
                "400",
                "500",
                "600",
                "700",
                "800",
                "900",
                100,
                200,
                300,
                400,
                500,
                600,
                700,
                800,
                900
              ]
            },
            {
              "$ref": "#/refs/fontWeightValue"
            }
          ]
        },
        "labelLimit": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "labelOpacity": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "labelPadding": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "encode": {
          "type": "object",
          "properties": {
            "axis": {
              "$ref": "#/defs/guideEncode"
            },
            "ticks": {
              "$ref": "#/defs/guideEncode"
            },
            "labels": {
              "$ref": "#/defs/guideEncode"
            },
            "title": {
              "$ref": "#/defs/guideEncode"
            },
            "grid": {
              "$ref": "#/defs/guideEncode"
            },
            "domain": {
              "$ref": "#/defs/guideEncode"
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false,
      "required": [
        "orient",
        "scale"
      ]
    },
    "background": {
      "type": "string"
    },
    "bind": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "input": {
              "enum": [
                "checkbox"
              ]
            },
            "element": {
              "$ref": "#/refs/element"
            },
            "debounce": {
              "type": "number"
            },
            "name": {
              "type": "string"
            }
          },
          "required": [
            "input"
          ]
        },
        {
          "type": "object",
          "properties": {
            "input": {
              "enum": [
                "radio",
                "select"
              ]
            },
            "element": {
              "$ref": "#/refs/element"
            },
            "options": {
              "type": "array"
            },
            "debounce": {
              "type": "number"
            },
            "name": {
              "type": "string"
            }
          },
          "additionalProperties": false,
          "required": [
            "input",
            "options"
          ]
        },
        {
          "type": "object",
          "properties": {
            "input": {
              "enum": [
                "range"
              ]
            },
            "element": {
              "$ref": "#/refs/element"
            },
            "min": {
              "type": "number"
            },
            "max": {
              "type": "number"
            },
            "step": {
              "type": "number"
            },
            "debounce": {
              "type": "number"
            },
            "name": {
              "type": "string"
            }
          },
          "additionalProperties": false,
          "required": [
            "input"
          ]
        },
        {
          "type": "object",
          "properties": {
            "input": {
              "not": {
                "enum": [
                  "checkbox",
                  "radio",
                  "range",
                  "select"
                ]
              }
            },
            "element": {
              "$ref": "#/refs/element"
            },
            "debounce": {
              "type": "number"
            },
            "name": {
              "type": "string"
            }
          },
          "additionalProperties": true
        }
      ]
    },
    "dataFormat": {
      "type": "object",
      "anyOf": [
        {
          "properties": {
            "type": {
              "enum": [
                "json"
              ]
            },
            "parse": {
              "oneOf": [
                {
                  "enum": [
                    "auto"
                  ]
                },
                {
                  "type": "object",
                  "additionalProperties": {
                    "oneOf": [
                      {
                        "enum": [
                          "boolean",
                          "number",
                          "date",
                          "string"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(date|utc):.*$"
                      }
                    ]
                  }
                }
              ]
            },
            "property": {
              "type": "string"
            },
            "copy": {
              "type": "boolean"
            }
          },
          "additionalProperties": false
        },
        {
          "properties": {
            "type": {
              "enum": [
                "csv",
                "tsv"
              ]
            },
            "parse": {
              "oneOf": [
                {
                  "enum": [
                    "auto"
                  ]
                },
                {
                  "type": "object",
                  "additionalProperties": {
                    "oneOf": [
                      {
                        "enum": [
                          "boolean",
                          "number",
                          "date",
                          "string"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(date|utc):.*$"
                      }
                    ]
                  }
                }
              ]
            }
          },
          "additionalProperties": false
        },
        {
          "properties": {
            "type": {
              "enum": [
                "dsv"
              ]
            },
            "delimiter": {
              "type": "string"
            },
            "parse": {
              "oneOf": [
                {
                  "enum": [
                    "auto"
                  ]
                },
                {
                  "type": "object",
                  "additionalProperties": {
                    "oneOf": [
                      {
                        "enum": [
                          "boolean",
                          "number",
                          "date",
                          "string"
                        ]
                      },
                      {
                        "type": "string",
                        "pattern": "^(date|utc):.*$"
                      }
                    ]
                  }
                }
              ]
            }
          },
          "additionalProperties": false
        },
        {
          "oneOf": [
            {
              "properties": {
                "type": {
                  "enum": [
                    "topojson"
                  ]
                },
                "feature": {
                  "type": "string"
                },
                "property": {
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            {
              "properties": {
                "type": {
                  "enum": [
                    "topojson"
                  ]
                },
                "mesh": {
                  "type": "string"
                },
                "property": {
                  "type": "string"
                }
              },
              "additionalProperties": false
            }
          ]
        }
      ]
    },
    "data": {
      "title": "Input data set definition",
      "type": "object",
      "allOf": [
        {
          "properties": {
            "name": {
              "type": "string"
            },
            "transform": {
              "type": "array",
              "items": {
                "$ref": "#/defs/transform"
              }
            },
            "on": {
              "$ref": "#/defs/onTrigger"
            }
          },
          "required": [
            "name"
          ]
        },
        {
          "anyOf": [
            {
              "required": [
                "name"
              ]
            },
            {
              "oneOf": [
                {
                  "properties": {
                    "source": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "minItems": 1
                        }
                      ]
                    }
                  },
                  "required": [
                    "source"
                  ]
                },
                {
                  "properties": {
                    "values": {
                      "type": "array"
                    },
                    "format": {
                      "$ref": "#/defs/dataFormat"
                    }
                  },
                  "required": [
                    "values"
                  ]
                },
                {
                  "properties": {
                    "url": {
                      "$ref": "#/refs/stringOrSignal"
                    },
                    "format": {
                      "oneOf": [
                        {
                          "$ref": "#/defs/dataFormat"
                        },
                        {
                          "$ref": "#/refs/signal"
                        }
                      ]
                    }
                  },
                  "required": [
                    "url"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "rule": {
      "type": "object",
      "properties": {
        "test": {
          "type": "string"
        }
      }
    },
    "encodeEntry": {
      "title": "Mark encode property set",
      "type": "object",
      "properties": {
        "x": {
          "$ref": "#/refs/numberValue"
        },
        "x2": {
          "$ref": "#/refs/numberValue"
        },
        "xc": {
          "$ref": "#/refs/numberValue"
        },
        "width": {
          "$ref": "#/refs/numberValue"
        },
        "y": {
          "$ref": "#/refs/numberValue"
        },
        "y2": {
          "$ref": "#/refs/numberValue"
        },
        "yc": {
          "$ref": "#/refs/numberValue"
        },
        "height": {
          "$ref": "#/refs/numberValue"
        },
        "opacity": {
          "$ref": "#/refs/numberValue"
        },
        "fill": {
          "$ref": "#/refs/colorValue"
        },
        "fillOpacity": {
          "$ref": "#/refs/numberValue"
        },
        "stroke": {
          "$ref": "#/refs/colorValue"
        },
        "strokeWidth": {
          "$ref": "#/refs/numberValue"
        },
        "strokeOpacity": {
          "$ref": "#/refs/numberValue"
        },
        "strokeDash": {
          "$ref": "#/refs/arrayValue"
        },
        "strokeDashOffset": {
          "$ref": "#/refs/numberValue"
        },
        "cursor": {
          "$ref": "#/refs/stringValue"
        },
        "clip": {
          "$ref": "#/refs/booleanValue"
        },
        "size": {
          "$ref": "#/refs/numberValue"
        },
        "shape": {
          "$ref": "#/refs/stringValue"
        },
        "path": {
          "$ref": "#/refs/stringValue"
        },
        "innerRadius": {
          "$ref": "#/refs/numberValue"
        },
        "outerRadius": {
          "$ref": "#/refs/numberValue"
        },
        "startAngle": {
          "$ref": "#/refs/numberValue"
        },
        "endAngle": {
          "$ref": "#/refs/numberValue"
        },
        "interpolate": {
          "$ref": "#/refs/stringValue"
        },
        "tension": {
          "$ref": "#/refs/numberValue"
        },
        "orient": {
          "$ref": "#/refs/orientValue"
        },
        "url": {
          "$ref": "#/refs/stringValue"
        },
        "align": {
          "$ref": "#/refs/alignValue"
        },
        "baseline": {
          "$ref": "#/refs/baselineValue"
        },
        "text": {
          "$ref": "#/refs/stringValue"
        },
        "dir": {
          "$ref": "#/refs/stringValue"
        },
        "ellipsis": {
          "$ref": "#/refs/stringValue"
        },
        "limit": {
          "$ref": "#/refs/numberValue"
        },
        "dx": {
          "$ref": "#/refs/numberValue"
        },
        "dy": {
          "$ref": "#/refs/numberValue"
        },
        "radius": {
          "$ref": "#/refs/numberValue"
        },
        "theta": {
          "$ref": "#/refs/numberValue"
        },
        "angle": {
          "$ref": "#/refs/numberValue"
        },
        "font": {
          "$ref": "#/refs/stringValue"
        },
        "fontSize": {
          "$ref": "#/refs/numberValue"
        },
        "fontWeight": {
          "$ref": "#/refs/fontWeightValue"
        },
        "fontStyle": {
          "$ref": "#/refs/stringValue"
        }
      },
      "additionalProperties": true
    },
    "encode": {
      "type": "object",
      "patternProperties": {
        "^.+$": {
          "$ref": "#/defs/encodeEntry"
        }
      },
      "additionalProperties": false
    },
    "layout": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "align": {
              "oneOf": [
                {
                  "oneOf": [
                    {
                      "enum": [
                        "all",
                        "each",
                        "none"
                      ]
                    },
                    {
                      "$ref": "#/refs/signal"
                    }
                  ]
                },
                {
                  "type": "object",
                  "properties": {
                    "row": {
                      "oneOf": [
                        {
                          "enum": [
                            "all",
                            "each",
                            "none"
                          ]
                        },
                        {
                          "$ref": "#/refs/signal"
                        }
                      ]
                    },
                    "column": {
                      "oneOf": [
                        {
                          "enum": [
                            "all",
                            "each",
                            "none"
                          ]
                        },
                        {
                          "$ref": "#/refs/signal"
                        }
                      ]
                    }
                  },
                  "additionalProperties": false
                }
              ]
            },
            "bounds": {
              "oneOf": [
                {
                  "enum": [
                    "full",
                    "flush"
                  ]
                },
                {
                  "$ref": "#/refs/signal"
                }
              ]
            },
            "center": {
              "oneOf": [
                {
                  "$ref": "#/refs/booleanOrSignal"
                },
                {
                  "type": "object",
                  "properties": {
                    "row": {
                      "$ref": "#/refs/booleanOrSignal"
                    },
                    "column": {
                      "$ref": "#/refs/booleanOrSignal"
                    }
                  },
                  "additionalProperties": false
                }
              ]
            },
            "columns": {
              "$ref": "#/refs/numberOrSignal"
            },
            "padding": {
              "oneOf": [
                {
                  "$ref": "#/refs/numberOrSignal"
                },
                {
                  "type": "object",
                  "properties": {
                    "row": {
                      "$ref": "#/refs/numberOrSignal"
                    },
                    "column": {
                      "$ref": "#/refs/numberOrSignal"
                    }
                  },
                  "additionalProperties": false
                }
              ]
            },
            "offset": {
              "oneOf": [
                {
                  "$ref": "#/refs/numberOrSignal"
                },
                {
                  "type": "object",
                  "properties": {
                    "rowHeader": {
                      "$ref": "#/refs/numberOrSignal"
                    },
                    "rowFooter": {
                      "$ref": "#/refs/numberOrSignal"
                    },
                    "rowTitle": {
                      "$ref": "#/refs/numberOrSignal"
                    },
                    "columnHeader": {
                      "$ref": "#/refs/numberOrSignal"
                    },
                    "columnFooter": {
                      "$ref": "#/refs/numberOrSignal"
                    },
                    "columnTitle": {
                      "$ref": "#/refs/numberOrSignal"
                    }
                  },
                  "additionalProperties": false
                }
              ]
            },
            "headerBand": {
              "oneOf": [
                {
                  "$ref": "#/refs/numberOrSignal"
                },
                {
                  "type": "null"
                },
                {
                  "type": "object",
                  "properties": {
                    "row": {
                      "$ref": "#/refs/numberOrSignal"
                    },
                    "column": {
                      "$ref": "#/refs/numberOrSignal"
                    }
                  },
                  "additionalProperties": false
                }
              ]
            },
            "footerBand": {
              "oneOf": [
                {
                  "$ref": "#/refs/numberOrSignal"
                },
                {
                  "type": "null"
                },
                {
                  "type": "object",
                  "properties": {
                    "row": {
                      "$ref": "#/refs/numberOrSignal"
                    },
                    "column": {
                      "$ref": "#/refs/numberOrSignal"
                    }
                  },
                  "additionalProperties": false
                }
              ]
            },
            "titleBand": {
              "oneOf": [
                {
                  "$ref": "#/refs/numberOrSignal"
                },
                {
                  "type": "null"
                },
                {
                  "type": "object",
                  "properties": {
                    "row": {
                      "$ref": "#/refs/numberOrSignal"
                    },
                    "column": {
                      "$ref": "#/refs/numberOrSignal"
                    }
                  },
                  "additionalProperties": false
                }
              ]
            }
          }
        },
        {
          "$ref": "#/refs/signal"
        }
      ]
    },
    "guideEncode": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "interactive": {
          "type": "boolean",
          "default": false
        },
        "style": {
          "$ref": "#/refs/style"
        }
      },
      "patternProperties": {
        "^(?!interactive|name|style).+$": {
          "$ref": "#/defs/encodeEntry"
        }
      },
      "additionalProperties": false
    },
    "legend": {
      "type": "object",
      "properties": {
        "size": {
          "type": "string"
        },
        "shape": {
          "type": "string"
        },
        "fill": {
          "type": "string"
        },
        "stroke": {
          "type": "string"
        },
        "opacity": {
          "type": "string"
        },
        "strokeDash": {
          "type": "string"
        },
        "type": {
          "enum": [
            "gradient",
            "symbol"
          ]
        },
        "direction": {
          "enum": [
            "vertical",
            "horizontal"
          ]
        },
        "orient": {
          "enum": [
            "none",
            "left",
            "right",
            "top",
            "bottom",
            "top-left",
            "top-right",
            "bottom-left",
            "bottom-right"
          ],
          "default": "right"
        },
        "format": {
          "$ref": "#/refs/stringOrSignal"
        },
        "title": {
          "$ref": "#/refs/stringOrSignal"
        },
        "tickCount": {
          "$ref": "#/refs/tickCount"
        },
        "values": {
          "$ref": "#/refs/arrayOrSignal"
        },
        "zindex": {
          "type": "number"
        },
        "cornerRadius": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "fillColor": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/colorValue"
            }
          ]
        },
        "offset": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "padding": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "strokeColor": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/colorValue"
            }
          ]
        },
        "strokeWidth": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "titleAlign": {
          "oneOf": [
            {
              "enum": [
                "left",
                "right",
                "center"
              ]
            },
            {
              "$ref": "#/refs/alignValue"
            }
          ]
        },
        "titleBaseline": {
          "oneOf": [
            {
              "enum": [
                "top",
                "middle",
                "bottom",
                "alphabetic"
              ]
            },
            {
              "$ref": "#/refs/baselineValue"
            }
          ]
        },
        "titleColor": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/colorValue"
            }
          ]
        },
        "titleFont": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/stringValue"
            }
          ]
        },
        "titleFontSize": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "titleFontWeight": {
          "oneOf": [
            {
              "enum": [
                null,
                "normal",
                "bold",
                "lighter",
                "bolder",
                "100",
                "200",
                "300",
                "400",
                "500",
                "600",
                "700",
                "800",
                "900",
                100,
                200,
                300,
                400,
                500,
                600,
                700,
                800,
                900
              ]
            },
            {
              "$ref": "#/refs/fontWeightValue"
            }
          ]
        },
        "titleLimit": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "titleOpacity": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "titlePadding": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "gradientLength": {
          "$ref": "#/refs/numberOrSignal"
        },
        "gradientOpacity": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "gradientStrokeColor": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/colorValue"
            }
          ]
        },
        "gradientStrokeWidth": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "gradientThickness": {
          "$ref": "#/refs/numberOrSignal"
        },
        "clipHeight": {
          "$ref": "#/refs/numberOrSignal"
        },
        "columns": {
          "$ref": "#/refs/numberOrSignal"
        },
        "columnPadding": {
          "$ref": "#/refs/numberOrSignal"
        },
        "rowPadding": {
          "$ref": "#/refs/numberOrSignal"
        },
        "gridAlign": {
          "oneOf": [
            {
              "enum": [
                "all",
                "each",
                "none"
              ]
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "symbolFillColor": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/colorValue"
            }
          ]
        },
        "symbolOffset": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "symbolOpacity": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "symbolSize": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "symbolStrokeColor": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/colorValue"
            }
          ]
        },
        "symbolStrokeWidth": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "symbolType": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/stringValue"
            }
          ]
        },
        "labelAlign": {
          "oneOf": [
            {
              "enum": [
                "left",
                "right",
                "center"
              ]
            },
            {
              "$ref": "#/refs/alignValue"
            }
          ]
        },
        "labelBaseline": {
          "oneOf": [
            {
              "enum": [
                "top",
                "middle",
                "bottom",
                "alphabetic"
              ]
            },
            {
              "$ref": "#/refs/baselineValue"
            }
          ]
        },
        "labelColor": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/colorValue"
            }
          ]
        },
        "labelFont": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/stringValue"
            }
          ]
        },
        "labelFontSize": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "labelFontWeight": {
          "oneOf": [
            {
              "enum": [
                null,
                "normal",
                "bold",
                "lighter",
                "bolder",
                "100",
                "200",
                "300",
                "400",
                "500",
                "600",
                "700",
                "800",
                "900",
                100,
                200,
                300,
                400,
                500,
                600,
                700,
                800,
                900
              ]
            },
            {
              "$ref": "#/refs/fontWeightValue"
            }
          ]
        },
        "labelLimit": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "labelOffset": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "labelOpacity": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "labelOverlap": {
          "$ref": "#/refs/labelOverlap"
        },
        "encode": {
          "type": "object",
          "properties": {
            "title": {
              "$ref": "#/defs/guideEncode"
            },
            "labels": {
              "$ref": "#/defs/guideEncode"
            },
            "legend": {
              "$ref": "#/defs/guideEncode"
            },
            "entries": {
              "$ref": "#/defs/guideEncode"
            },
            "symbols": {
              "$ref": "#/defs/guideEncode"
            },
            "gradient": {
              "$ref": "#/defs/guideEncode"
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false,
      "anyOf": [
        {
          "required": [
            "size"
          ]
        },
        {
          "required": [
            "shape"
          ]
        },
        {
          "required": [
            "fill"
          ]
        },
        {
          "required": [
            "stroke"
          ]
        },
        {
          "required": [
            "opacity"
          ]
        },
        {
          "required": [
            "strokeDash"
          ]
        }
      ]
    },
    "mark": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/refs/marktype"
        },
        "role": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "style": {
          "$ref": "#/refs/style"
        },
        "key": {
          "type": "string"
        },
        "clip": {
          "$ref": "#/refs/markclip"
        },
        "sort": {
          "$ref": "#/refs/compare"
        },
        "interactive": {
          "$ref": "#/refs/booleanOrSignal"
        },
        "encode": {
          "$ref": "#/defs/encode"
        },
        "transform": {
          "type": "array",
          "items": {
            "$ref": "#/defs/transformMark"
          }
        },
        "on": {
          "$ref": "#/defs/onMarkTrigger"
        }
      },
      "required": [
        "type"
      ]
    },
    "markGroup": {
      "allOf": [
        {
          "properties": {
            "type": {
              "enum": [
                "group"
              ]
            }
          },
          "required": [
            "type"
          ]
        },
        {
          "$ref": "#/defs/mark"
        },
        {
          "$ref": "#/defs/scope"
        },
        {
          "type": "object",
          "properties": {
            "from": {
              "oneOf": [
                {
                  "$ref": "#/refs/from"
                },
                {
                  "$ref": "#/refs/facet"
                }
              ]
            }
          }
        }
      ]
    },
    "markVisual": {
      "allOf": [
        {
          "not": {
            "properties": {
              "type": {
                "enum": [
                  "group"
                ]
              }
            }
          }
        },
        {
          "$ref": "#/defs/mark"
        },
        {
          "type": "object",
          "properties": {
            "from": {
              "$ref": "#/refs/from"
            }
          }
        }
      ]
    },
    "listener": {
      "oneOf": [
        {
          "$ref": "#/refs/signal"
        },
        {
          "type": "object",
          "properties": {
            "scale": {
              "type": "string"
            }
          },
          "required": [
            "scale"
          ]
        },
        {
          "$ref": "#/defs/stream"
        }
      ]
    },
    "onEvents": {
      "type": "array",
      "items": {
        "allOf": [
          {
            "type": "object",
            "properties": {
              "events": {
                "oneOf": [
                  {
                    "$ref": "#/refs/selector"
                  },
                  {
                    "$ref": "#/defs/listener"
                  },
                  {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                      "$ref": "#/defs/listener"
                    }
                  }
                ]
              },
              "force": {
                "type": "boolean"
              }
            },
            "required": [
              "events"
            ]
          },
          {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "encode": {
                    "type": "string"
                  }
                },
                "required": [
                  "encode"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "update": {
                    "oneOf": [
                      {
                        "$ref": "#/refs/exprString"
                      },
                      {
                        "$ref": "#/refs/expr"
                      },
                      {
                        "$ref": "#/refs/signal"
                      },
                      {
                        "type": "object",
                        "properties": {
                          "value": {}
                        },
                        "required": [
                          "value"
                        ]
                      }
                    ]
                  }
                },
                "required": [
                  "update"
                ]
              }
            ]
          }
        ]
      }
    },
    "onTrigger": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "trigger": {
            "$ref": "#/refs/exprString"
          },
          "insert": {
            "$ref": "#/refs/exprString"
          },
          "remove": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "$ref": "#/refs/exprString"
              }
            ]
          },
          "toggle": {
            "$ref": "#/refs/exprString"
          },
          "modify": {
            "$ref": "#/refs/exprString"
          },
          "values": {
            "$ref": "#/refs/exprString"
          }
        },
        "required": [
          "trigger"
        ]
      }
    },
    "onMarkTrigger": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "trigger": {
            "$ref": "#/refs/exprString"
          },
          "modify": {
            "$ref": "#/refs/exprString"
          },
          "values": {
            "$ref": "#/refs/exprString"
          }
        },
        "required": [
          "trigger"
        ]
      }
    },
    "padding": {
      "oneOf": [
        {
          "type": "number"
        },
        {
          "type": "object",
          "properties": {
            "top": {
              "type": "number"
            },
            "bottom": {
              "type": "number"
            },
            "left": {
              "type": "number"
            },
            "right": {
              "type": "number"
            }
          },
          "additionalProperties": false
        }
      ]
    },
    "projection": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "type": {
          "$ref": "#/refs/stringOrSignal"
        },
        "clipAngle": {
          "$ref": "#/refs/numberOrSignal"
        },
        "clipExtent": {
          "oneOf": [
            {
              "$ref": "#/refs/signal"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/refs/signal"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/refs/numberOrSignal"
                    },
                    "minItems": 2,
                    "maxItems": 2
                  }
                ]
              }
            }
          ]
        },
        "scale": {
          "$ref": "#/refs/numberOrSignal"
        },
        "translate": {
          "oneOf": [
            {
              "$ref": "#/refs/signal"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/refs/numberOrSignal"
              },
              "minItems": 2,
              "maxItems": 2
            }
          ]
        },
        "center": {
          "oneOf": [
            {
              "$ref": "#/refs/signal"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/refs/numberOrSignal"
              },
              "minItems": 2,
              "maxItems": 2
            }
          ]
        },
        "rotate": {
          "oneOf": [
            {
              "$ref": "#/refs/signal"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/refs/numberOrSignal"
              },
              "minItems": 2,
              "maxItems": 3
            }
          ]
        },
        "parallels": {
          "oneOf": [
            {
              "$ref": "#/refs/signal"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/refs/numberOrSignal"
              },
              "minItems": 2,
              "maxItems": 2
            }
          ]
        },
        "precision": {
          "$ref": "#/refs/numberOrSignal"
        },
        "pointRadius": {
          "$ref": "#/refs/numberOrSignal"
        },
        "fit": {
          "oneOf": [
            {
              "type": "object"
            },
            {
              "type": "array"
            }
          ]
        },
        "extent": {
          "oneOf": [
            {
              "$ref": "#/refs/signal"
            },
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/refs/signal"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/refs/numberOrSignal"
                    },
                    "minItems": 2,
                    "maxItems": 2
                  }
                ]
              },
              "minItems": 2,
              "maxItems": 2
            }
          ]
        },
        "size": {
          "oneOf": [
            {
              "$ref": "#/refs/signal"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/refs/numberOrSignal"
              },
              "minItems": 2,
              "maxItems": 2
            }
          ]
        }
      },
      "additionalProperties": true,
      "required": [
        "name"
      ]
    },
    "scale": {
      "title": "Scale mapping",
      "type": "object",
      "allOf": [
        {
          "properties": {
            "name": {
              "type": "string"
            },
            "type": {
              "type": "string",
              "default": "linear"
            },
            "domain": {
              "oneOf": [
                {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "$ref": "#/refs/signal"
                      }
                    ]
                  }
                },
                {
                  "$ref": "#/refs/scaleData"
                },
                {
                  "$ref": "#/refs/signal"
                }
              ]
            },
            "domainMin": {
              "$ref": "#/refs/numberOrSignal"
            },
            "domainMax": {
              "$ref": "#/refs/numberOrSignal"
            },
            "domainMid": {
              "$ref": "#/refs/numberOrSignal"
            },
            "domainRaw": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "type": "array"
                },
                {
                  "$ref": "#/refs/signal"
                }
              ]
            },
            "reverse": {
              "$ref": "#/refs/booleanOrSignal"
            },
            "round": {
              "$ref": "#/refs/booleanOrSignal"
            }
          },
          "required": [
            "name"
          ]
        },
        {
          "oneOf": [
            {
              "properties": {
                "type": {
                  "enum": [
                    "ordinal"
                  ]
                },
                "range": {
                  "oneOf": [
                    {
                      "enum": [
                        "width",
                        "height",
                        "symbol",
                        "category",
                        "ordinal",
                        "ramp",
                        "diverging",
                        "heatmap"
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "null"
                          },
                          {
                            "type": "boolean"
                          },
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "$ref": "#/refs/signal"
                          }
                        ]
                      }
                    },
                    {
                      "$ref": "#/refs/signal"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "scheme": {
                          "$ref": "#/refs/stringOrSignal"
                        },
                        "count": {
                          "$ref": "#/refs/numberOrSignal"
                        },
                        "extent": {
                          "oneOf": [
                            {
                              "type": "array",
                              "items": {
                                "$ref": "#/refs/numberOrSignal"
                              },
                              "numItems": 2
                            },
                            {
                              "$ref": "#/refs/signal"
                            }
                          ]
                        }
                      },
                      "required": [
                        "scheme"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "$ref": "#/refs/scaleData"
                    }
                  ]
                },
                "domainImplicit": {
                  "$ref": "#/refs/booleanOrSignal"
                }
              },
              "required": [
                "type"
              ]
            },
            {
              "properties": {
                "type": {
                  "enum": [
                    "band"
                  ]
                },
                "range": {
                  "oneOf": [
                    {
                      "enum": [
                        "width",
                        "height",
                        "symbol",
                        "category",
                        "ordinal",
                        "ramp",
                        "diverging",
                        "heatmap"
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "null"
                          },
                          {
                            "type": "boolean"
                          },
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "$ref": "#/refs/signal"
                          }
                        ]
                      }
                    },
                    {
                      "$ref": "#/refs/signal"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "step": {
                          "$ref": "#/refs/numberOrSignal"
                        }
                      },
                      "required": [
                        "step"
                      ],
                      "additionalProperties": false
                    }
                  ]
                },
                "padding": {
                  "$ref": "#/refs/numberOrSignal"
                },
                "paddingInner": {
                  "$ref": "#/refs/numberOrSignal"
                },
                "paddingOuter": {
                  "$ref": "#/refs/numberOrSignal"
                },
                "align": {
                  "$ref": "#/refs/numberOrSignal"
                }
              },
              "required": [
                "type"
              ]
            },
            {
              "properties": {
                "type": {
                  "enum": [
                    "point"
                  ]
                },
                "range": {
                  "oneOf": [
                    {
                      "enum": [
                        "width",
                        "height",
                        "symbol",
                        "category",
                        "ordinal",
                        "ramp",
                        "diverging",
                        "heatmap"
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "null"
                          },
                          {
                            "type": "boolean"
                          },
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "$ref": "#/refs/signal"
                          }
                        ]
                      }
                    },
                    {
                      "$ref": "#/refs/signal"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "step": {
                          "$ref": "#/refs/numberOrSignal"
                        }
                      },
                      "required": [
                        "step"
                      ],
                      "additionalProperties": false
                    }
                  ]
                },
                "padding": {
                  "$ref": "#/refs/numberOrSignal"
                },
                "paddingOuter": {
                  "$ref": "#/refs/numberOrSignal"
                },
                "align": {
                  "$ref": "#/refs/numberOrSignal"
                }
              },
              "required": [
                "type"
              ]
            },
            {
              "properties": {
                "type": {
                  "enum": [
                    "sequential"
                  ]
                },
                "range": {
                  "oneOf": [
                    {
                      "enum": [
                        "width",
                        "height",
                        "symbol",
                        "category",
                        "ordinal",
                        "ramp",
                        "diverging",
                        "heatmap"
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "null"
                          },
                          {
                            "type": "boolean"
                          },
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "$ref": "#/refs/signal"
                          }
                        ]
                      }
                    },
                    {
                      "$ref": "#/refs/signal"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "scheme": {
                          "$ref": "#/refs/stringOrSignal"
                        },
                        "count": {
                          "$ref": "#/refs/numberOrSignal"
                        },
                        "extent": {
                          "oneOf": [
                            {
                              "type": "array",
                              "items": {
                                "$ref": "#/refs/numberOrSignal"
                              },
                              "numItems": 2
                            },
                            {
                              "$ref": "#/refs/signal"
                            }
                          ]
                        }
                      },
                      "required": [
                        "scheme"
                      ],
                      "additionalProperties": false
                    }
                  ]
                },
                "clamp": {
                  "$ref": "#/refs/booleanOrSignal"
                }
              },
              "required": [
                "type",
                "range"
              ]
            },
            {
              "properties": {
                "type": {
                  "enum": [
                    "time",
                    "utc"
                  ]
                },
                "range": {
                  "oneOf": [
                    {
                      "enum": [
                        "width",
                        "height",
                        "symbol",
                        "category",
                        "ordinal",
                        "ramp",
                        "diverging",
                        "heatmap"
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "null"
                          },
                          {
                            "type": "boolean"
                          },
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "$ref": "#/refs/signal"
                          }
                        ]
                      }
                    },
                    {
                      "$ref": "#/refs/signal"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "scheme": {
                          "$ref": "#/refs/stringOrSignal"
                        },
                        "count": {
                          "$ref": "#/refs/numberOrSignal"
                        },
                        "extent": {
                          "oneOf": [
                            {
                              "type": "array",
                              "items": {
                                "$ref": "#/refs/numberOrSignal"
                              },
                              "numItems": 2
                            },
                            {
                              "$ref": "#/refs/signal"
                            }
                          ]
                        }
                      },
                      "required": [
                        "scheme"
                      ],
                      "additionalProperties": false
                    }
                  ]
                },
                "clamp": {
                  "$ref": "#/refs/booleanOrSignal"
                },
                "padding": {
                  "$ref": "#/refs/numberOrSignal"
                },
                "nice": {
                  "oneOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "string",
                      "enum": [
                        "millisecond",
                        "second",
                        "minute",
                        "hour",
                        "day",
                        "week",
                        "month",
                        "year"
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "interval": {
                          "oneOf": [
                            {
                              "type": "string",
                              "enum": [
                                "millisecond",
                                "second",
                                "minute",
                                "hour",
                                "day",
                                "week",
                                "month",
                                "year"
                              ]
                            },
                            {
                              "$ref": "#/refs/signal"
                            }
                          ]
                        },
                        "step": {
                          "$ref": "#/refs/numberOrSignal"
                        }
                      },
                      "required": [
                        "interval"
                      ]
                    },
                    {
                      "$ref": "#/refs/signal"
                    }
                  ]
                }
              },
              "required": [
                "type"
              ]
            },
            {
              "properties": {
                "type": {
                  "enum": [
                    "identity"
                  ]
                },
                "nice": {
                  "$ref": "#/refs/booleanOrSignal"
                }
              },
              "required": [
                "type"
              ]
            },
            {
              "description": "Discretizing scales",
              "properties": {
                "type": {
                  "enum": [
                    "quantile",
                    "quantize",
                    "threshold",
                    "bin-ordinal"
                  ]
                },
                "range": {
                  "oneOf": [
                    {
                      "enum": [
                        "width",
                        "height",
                        "symbol",
                        "category",
                        "ordinal",
                        "ramp",
                        "diverging",
                        "heatmap"
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "null"
                          },
                          {
                            "type": "boolean"
                          },
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "$ref": "#/refs/signal"
                          }
                        ]
                      }
                    },
                    {
                      "$ref": "#/refs/signal"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "scheme": {
                          "$ref": "#/refs/stringOrSignal"
                        },
                        "count": {
                          "$ref": "#/refs/numberOrSignal"
                        },
                        "extent": {
                          "oneOf": [
                            {
                              "type": "array",
                              "items": {
                                "$ref": "#/refs/numberOrSignal"
                              },
                              "numItems": 2
                            },
                            {
                              "$ref": "#/refs/signal"
                            }
                          ]
                        }
                      },
                      "required": [
                        "scheme"
                      ],
                      "additionalProperties": false
                    }
                  ]
                },
                "nice": {
                  "oneOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "number"
                    },
                    {
                      "$ref": "#/refs/signal"
                    }
                  ]
                },
                "zero": {
                  "$ref": "#/refs/booleanOrSignal"
                }
              },
              "required": [
                "type"
              ]
            },
            {
              "description": "Default numeric scale",
              "not": {
                "properties": {
                  "type": {
                    "enum": [
                      "ordinal",
                      "band",
                      "point",
                      "quantile",
                      "quantize",
                      "threshold",
                      "sequential",
                      "pow",
                      "log",
                      "time",
                      "utc",
                      "identity",
                      "bin-ordinal",
                      "bin-linear"
                    ]
                  }
                },
                "required": [
                  "type"
                ]
              },
              "properties": {
                "range": {
                  "oneOf": [
                    {
                      "enum": [
                        "width",
                        "height",
                        "symbol",
                        "category",
                        "ordinal",
                        "ramp",
                        "diverging",
                        "heatmap"
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "null"
                          },
                          {
                            "type": "boolean"
                          },
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "$ref": "#/refs/signal"
                          }
                        ]
                      }
                    },
                    {
                      "$ref": "#/refs/signal"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "scheme": {
                          "$ref": "#/refs/stringOrSignal"
                        },
                        "count": {
                          "$ref": "#/refs/numberOrSignal"
                        },
                        "extent": {
                          "oneOf": [
                            {
                              "type": "array",
                              "items": {
                                "$ref": "#/refs/numberOrSignal"
                              },
                              "numItems": 2
                            },
                            {
                              "$ref": "#/refs/signal"
                            }
                          ]
                        }
                      },
                      "required": [
                        "scheme"
                      ],
                      "additionalProperties": false
                    }
                  ]
                },
                "interpolate": {
                  "$ref": "#/refs/scaleInterpolate"
                },
                "clamp": {
                  "$ref": "#/refs/booleanOrSignal"
                },
                "padding": {
                  "$ref": "#/refs/numberOrSignal"
                },
                "nice": {
                  "oneOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "number"
                    },
                    {
                      "$ref": "#/refs/signal"
                    }
                  ]
                },
                "zero": {
                  "$ref": "#/refs/booleanOrSignal"
                }
              }
            },
            {
              "properties": {
                "type": {
                  "enum": [
                    "log"
                  ]
                },
                "range": {
                  "oneOf": [
                    {
                      "enum": [
                        "width",
                        "height",
                        "symbol",
                        "category",
                        "ordinal",
                        "ramp",
                        "diverging",
                        "heatmap"
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "null"
                          },
                          {
                            "type": "boolean"
                          },
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "$ref": "#/refs/signal"
                          }
                        ]
                      }
                    },
                    {
                      "$ref": "#/refs/signal"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "scheme": {
                          "$ref": "#/refs/stringOrSignal"
                        },
                        "count": {
                          "$ref": "#/refs/numberOrSignal"
                        },
                        "extent": {
                          "oneOf": [
                            {
                              "type": "array",
                              "items": {
                                "$ref": "#/refs/numberOrSignal"
                              },
                              "numItems": 2
                            },
                            {
                              "$ref": "#/refs/signal"
                            }
                          ]
                        }
                      },
                      "required": [
                        "scheme"
                      ],
                      "additionalProperties": false
                    }
                  ]
                },
                "interpolate": {
                  "$ref": "#/refs/scaleInterpolate"
                },
                "base": {
                  "$ref": "#/refs/numberOrSignal"
                },
                "clamp": {
                  "$ref": "#/refs/booleanOrSignal"
                },
                "padding": {
                  "$ref": "#/refs/numberOrSignal"
                },
                "nice": {
                  "oneOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "number"
                    },
                    {
                      "$ref": "#/refs/signal"
                    }
                  ]
                },
                "zero": {
                  "$ref": "#/refs/booleanOrSignal"
                }
              },
              "required": [
                "type"
              ]
            },
            {
              "properties": {
                "type": {
                  "enum": [
                    "pow"
                  ]
                },
                "range": {
                  "oneOf": [
                    {
                      "enum": [
                        "width",
                        "height",
                        "symbol",
                        "category",
                        "ordinal",
                        "ramp",
                        "diverging",
                        "heatmap"
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "null"
                          },
                          {
                            "type": "boolean"
                          },
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "$ref": "#/refs/signal"
                          }
                        ]
                      }
                    },
                    {
                      "$ref": "#/refs/signal"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "scheme": {
                          "$ref": "#/refs/stringOrSignal"
                        },
                        "count": {
                          "$ref": "#/refs/numberOrSignal"
                        },
                        "extent": {
                          "oneOf": [
                            {
                              "type": "array",
                              "items": {
                                "$ref": "#/refs/numberOrSignal"
                              },
                              "numItems": 2
                            },
                            {
                              "$ref": "#/refs/signal"
                            }
                          ]
                        }
                      },
                      "required": [
                        "scheme"
                      ],
                      "additionalProperties": false
                    }
                  ]
                },
                "interpolate": {
                  "$ref": "#/refs/scaleInterpolate"
                },
                "clamp": {
                  "$ref": "#/refs/booleanOrSignal"
                },
                "exponent": {
                  "$ref": "#/refs/numberOrSignal"
                },
                "padding": {
                  "$ref": "#/refs/numberOrSignal"
                },
                "nice": {
                  "oneOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "number"
                    },
                    {
                      "$ref": "#/refs/signal"
                    }
                  ]
                },
                "zero": {
                  "$ref": "#/refs/booleanOrSignal"
                }
              },
              "required": [
                "type"
              ]
            },
            {
              "properties": {
                "type": {
                  "enum": [
                    "bin-linear"
                  ]
                },
                "range": {
                  "oneOf": [
                    {
                      "enum": [
                        "width",
                        "height",
                        "symbol",
                        "category",
                        "ordinal",
                        "ramp",
                        "diverging",
                        "heatmap"
                      ]
                    },
                    {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "null"
                          },
                          {
                            "type": "boolean"
                          },
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "$ref": "#/refs/signal"
                          }
                        ]
                      }
                    },
                    {
                      "$ref": "#/refs/signal"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "scheme": {
                          "$ref": "#/refs/stringOrSignal"
                        },
                        "count": {
                          "$ref": "#/refs/numberOrSignal"
                        },
                        "extent": {
                          "oneOf": [
                            {
                              "type": "array",
                              "items": {
                                "$ref": "#/refs/numberOrSignal"
                              },
                              "numItems": 2
                            },
                            {
                              "$ref": "#/refs/signal"
                            }
                          ]
                        }
                      },
                      "required": [
                        "scheme"
                      ],
                      "additionalProperties": false
                    }
                  ]
                },
                "interpolate": {
                  "$ref": "#/refs/scaleInterpolate"
                }
              },
              "required": [
                "type"
              ]
            }
          ]
        }
      ]
    },
    "scope": {
      "type": "object",
      "properties": {
        "encode": {
          "$ref": "#/defs/encode"
        },
        "layout": {
          "$ref": "#/defs/layout"
        },
        "signals": {
          "type": "array",
          "items": {
            "$ref": "#/defs/signal"
          }
        },
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/defs/data"
          }
        },
        "scales": {
          "type": "array",
          "items": {
            "$ref": "#/defs/scale"
          }
        },
        "projections": {
          "type": "array",
          "items": {
            "$ref": "#/defs/projection"
          }
        },
        "axes": {
          "type": "array",
          "items": {
            "$ref": "#/defs/axis"
          }
        },
        "legends": {
          "type": "array",
          "items": {
            "$ref": "#/defs/legend"
          }
        },
        "title": {
          "$ref": "#/defs/title"
        },
        "marks": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "$ref": "#/defs/markGroup"
              },
              {
                "$ref": "#/defs/markVisual"
              }
            ]
          }
        }
      }
    },
    "signal": {
      "oneOf": [
        {
          "$ref": "#/defs/signalPush"
        },
        {
          "$ref": "#/defs/signalNew"
        },
        {
          "$ref": "#/defs/signalInit"
        }
      ]
    },
    "signalName": {
      "type": "string",
      "not": {
        "enum": [
          "parent",
          "datum",
          "event",
          "item"
        ]
      }
    },
    "signalNew": {
      "type": "object",
      "properties": {
        "name": {
          "$ref": "#/defs/signalName"
        },
        "description": {
          "type": "string"
        },
        "value": {},
        "react": {
          "type": "boolean",
          "default": true
        },
        "update": {
          "$ref": "#/refs/exprString"
        },
        "on": {
          "$ref": "#/defs/onEvents"
        },
        "bind": {
          "$ref": "#/defs/bind"
        }
      },
      "additionalProperties": false,
      "required": [
        "name"
      ]
    },
    "signalInit": {
      "type": "object",
      "properties": {
        "name": {
          "$ref": "#/defs/signalName"
        },
        "description": {
          "type": "string"
        },
        "value": {},
        "init": {
          "$ref": "#/refs/exprString"
        },
        "on": {
          "$ref": "#/defs/onEvents"
        },
        "bind": {
          "$ref": "#/defs/bind"
        }
      },
      "additionalProperties": false,
      "required": [
        "name",
        "init"
      ]
    },
    "signalPush": {
      "type": "object",
      "properties": {
        "name": {
          "$ref": "#/defs/signalName"
        },
        "push": {
          "enum": [
            "outer"
          ]
        },
        "description": {
          "type": "string"
        },
        "on": {
          "$ref": "#/defs/onEvents"
        }
      },
      "additionalProperties": false,
      "required": [
        "name",
        "push"
      ]
    },
    "streamParams": {
      "properties": {
        "between": {
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "items": {
            "$ref": "#/defs/stream"
          }
        },
        "marktype": {
          "type": "string"
        },
        "markname": {
          "type": "string"
        },
        "filter": {
          "oneOf": [
            {
              "$ref": "#/refs/exprString"
            },
            {
              "type": "array",
              "minItems": 1,
              "items": {
                "$ref": "#/refs/exprString"
              }
            }
          ]
        },
        "throttle": {
          "type": "number"
        },
        "debounce": {
          "type": "number"
        },
        "consume": {
          "type": "boolean"
        }
      }
    },
    "streamEvents": {
      "properties": {
        "source": {
          "type": "string"
        },
        "type": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ]
    },
    "stream": {
      "title": "Input event stream definition",
      "type": "object",
      "allOf": [
        {
          "$ref": "#/defs/streamParams"
        },
        {
          "oneOf": [
            {
              "$ref": "#/defs/streamEvents"
            },
            {
              "type": "object",
              "properties": {
                "stream": {
                  "$ref": "#/defs/stream"
                }
              },
              "required": [
                "stream"
              ]
            },
            {
              "type": "object",
              "properties": {
                "merge": {
                  "type": "array",
                  "minItems": 1,
                  "items": {
                    "$ref": "#/defs/stream"
                  }
                }
              },
              "required": [
                "merge"
              ]
            }
          ]
        }
      ]
    },
    "titleEncode": {
      "type": "object",
      "patternProperties": {
        "^(?!interactive|name|style).+$": {
          "$ref": "#/defs/encodeEntry"
        }
      },
      "additionalProperties": false
    },
    "title": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "object",
          "properties": {
            "name": {
              "type": "string"
            },
            "orient": {
              "enum": [
                "none",
                "left",
                "right",
                "top",
                "bottom"
              ],
              "default": "top"
            },
            "anchor": {
              "oneOf": [
                {
                  "enum": [
                    "start",
                    "middle",
                    "end"
                  ],
                  "default": "middle"
                },
                {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "allOf": [
                          {
                            "$ref": "#/defs/rule"
                          },
                          {
                            "type": "object",
                            "allOf": [
                              {
                                "$ref": "#/refs/stringModifiers"
                              },
                              {
                                "anyOf": [
                                  {
                                    "oneOf": [
                                      {
                                        "$ref": "#/refs/signal"
                                      },
                                      {
                                        "properties": {
                                          "value": {
                                            "enum": [
                                              "start",
                                              "middle",
                                              "end"
                                            ]
                                          }
                                        },
                                        "required": [
                                          "value"
                                        ]
                                      },
                                      {
                                        "properties": {
                                          "field": {
                                            "$ref": "#/refs/field"
                                          }
                                        },
                                        "required": [
                                          "field"
                                        ]
                                      },
                                      {
                                        "properties": {
                                          "range": {
                                            "type": [
                                              "number",
                                              "boolean"
                                            ]
                                          }
                                        },
                                        "required": [
                                          "range"
                                        ]
                                      }
                                    ]
                                  },
                                  {
                                    "required": [
                                      "scale",
                                      "value"
                                    ]
                                  },
                                  {
                                    "required": [
                                      "scale",
                                      "band"
                                    ]
                                  },
                                  {
                                    "required": [
                                      "offset"
                                    ]
                                  }
                                ]
                              }
                            ]
                          }
                        ]
                      }
                    },
                    {
                      "type": "object",
                      "allOf": [
                        {
                          "$ref": "#/refs/stringModifiers"
                        },
                        {
                          "anyOf": [
                            {
                              "oneOf": [
                                {
                                  "$ref": "#/refs/signal"
                                },
                                {
                                  "properties": {
                                    "value": {
                                      "enum": [
                                        "start",
                                        "middle",
                                        "end"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "value"
                                  ]
                                },
                                {
                                  "properties": {
                                    "field": {
                                      "$ref": "#/refs/field"
                                    }
                                  },
                                  "required": [
                                    "field"
                                  ]
                                },
                                {
                                  "properties": {
                                    "range": {
                                      "type": [
                                        "number",
                                        "boolean"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "range"
                                  ]
                                }
                              ]
                            },
                            {
                              "required": [
                                "scale",
                                "value"
                              ]
                            },
                            {
                              "required": [
                                "scale",
                                "band"
                              ]
                            },
                            {
                              "required": [
                                "offset"
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "frame": {
              "oneOf": [
                {
                  "enum": [
                    "group",
                    "bounds"
                  ]
                },
                {
                  "$ref": "#/refs/stringValue"
                }
              ]
            },
            "offset": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/refs/numberValue"
                }
              ]
            },
            "style": {
              "$ref": "#/refs/style"
            },
            "text": {
              "$ref": "#/refs/stringOrSignal"
            },
            "zindex": {
              "type": "number"
            },
            "interactive": {
              "type": "boolean"
            },
            "align": {
              "oneOf": [
                {
                  "enum": [
                    "left",
                    "right",
                    "center"
                  ]
                },
                {
                  "$ref": "#/refs/alignValue"
                }
              ]
            },
            "angle": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/refs/numberValue"
                }
              ]
            },
            "baseline": {
              "oneOf": [
                {
                  "enum": [
                    "top",
                    "middle",
                    "bottom",
                    "alphabetic"
                  ]
                },
                {
                  "$ref": "#/refs/baselineValue"
                }
              ]
            },
            "color": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "type": "string"
                },
                {
                  "$ref": "#/refs/colorValue"
                }
              ]
            },
            "font": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/refs/stringValue"
                }
              ]
            },
            "fontSize": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/refs/numberValue"
                }
              ]
            },
            "fontWeight": {
              "oneOf": [
                {
                  "enum": [
                    null,
                    "normal",
                    "bold",
                    "lighter",
                    "bolder",
                    "100",
                    "200",
                    "300",
                    "400",
                    "500",
                    "600",
                    "700",
                    "800",
                    "900",
                    100,
                    200,
                    300,
                    400,
                    500,
                    600,
                    700,
                    800,
                    900
                  ]
                },
                {
                  "$ref": "#/refs/fontWeightValue"
                }
              ]
            },
            "limit": {
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "$ref": "#/refs/numberValue"
                }
              ]
            },
            "encode": {
              "$ref": "#/defs/titleEncode"
            }
          },
          "required": [
            "text"
          ],
          "additionalProperties": false
        }
      ]
    },
    "transform": {
      "oneOf": [
        {
          "$ref": "#/defs/aggregateTransform"
        },
        {
          "$ref": "#/defs/binTransform"
        },
        {
          "$ref": "#/defs/collectTransform"
        },
        {
          "$ref": "#/defs/countpatternTransform"
        },
        {
          "$ref": "#/defs/crossTransform"
        },
        {
          "$ref": "#/defs/densityTransform"
        },
        {
          "$ref": "#/defs/extentTransform"
        },
        {
          "$ref": "#/defs/filterTransform"
        },
        {
          "$ref": "#/defs/flattenTransform"
        },
        {
          "$ref": "#/defs/foldTransform"
        },
        {
          "$ref": "#/defs/formulaTransform"
        },
        {
          "$ref": "#/defs/imputeTransform"
        },
        {
          "$ref": "#/defs/joinaggregateTransform"
        },
        {
          "$ref": "#/defs/lookupTransform"
        },
        {
          "$ref": "#/defs/pivotTransform"
        },
        {
          "$ref": "#/defs/projectTransform"
        },
        {
          "$ref": "#/defs/sampleTransform"
        },
        {
          "$ref": "#/defs/sequenceTransform"
        },
        {
          "$ref": "#/defs/windowTransform"
        },
        {
          "$ref": "#/defs/identifierTransform"
        },
        {
          "$ref": "#/defs/linkpathTransform"
        },
        {
          "$ref": "#/defs/pieTransform"
        },
        {
          "$ref": "#/defs/stackTransform"
        },
        {
          "$ref": "#/defs/contourTransform"
        },
        {
          "$ref": "#/defs/geojsonTransform"
        },
        {
          "$ref": "#/defs/geopathTransform"
        },
        {
          "$ref": "#/defs/geopointTransform"
        },
        {
          "$ref": "#/defs/geoshapeTransform"
        },
        {
          "$ref": "#/defs/graticuleTransform"
        },
        {
          "$ref": "#/defs/forceTransform"
        },
        {
          "$ref": "#/defs/nestTransform"
        },
        {
          "$ref": "#/defs/packTransform"
        },
        {
          "$ref": "#/defs/partitionTransform"
        },
        {
          "$ref": "#/defs/stratifyTransform"
        },
        {
          "$ref": "#/defs/treeTransform"
        },
        {
          "$ref": "#/defs/treelinksTransform"
        },
        {
          "$ref": "#/defs/treemapTransform"
        },
        {
          "$ref": "#/defs/voronoiTransform"
        },
        {
          "$ref": "#/defs/wordcloudTransform"
        },
        {
          "$ref": "#/defs/crossfilterTransform"
        },
        {
          "$ref": "#/defs/resolvefilterTransform"
        }
      ]
    },
    "transformMark": {
      "oneOf": [
        {
          "$ref": "#/defs/binTransform"
        },
        {
          "$ref": "#/defs/collectTransform"
        },
        {
          "$ref": "#/defs/extentTransform"
        },
        {
          "$ref": "#/defs/formulaTransform"
        },
        {
          "$ref": "#/defs/joinaggregateTransform"
        },
        {
          "$ref": "#/defs/lookupTransform"
        },
        {
          "$ref": "#/defs/sampleTransform"
        },
        {
          "$ref": "#/defs/windowTransform"
        },
        {
          "$ref": "#/defs/identifierTransform"
        },
        {
          "$ref": "#/defs/linkpathTransform"
        },
        {
          "$ref": "#/defs/pieTransform"
        },
        {
          "$ref": "#/defs/stackTransform"
        },
        {
          "$ref": "#/defs/geojsonTransform"
        },
        {
          "$ref": "#/defs/geopathTransform"
        },
        {
          "$ref": "#/defs/geopointTransform"
        },
        {
          "$ref": "#/defs/geoshapeTransform"
        },
        {
          "$ref": "#/defs/forceTransform"
        },
        {
          "$ref": "#/defs/packTransform"
        },
        {
          "$ref": "#/defs/partitionTransform"
        },
        {
          "$ref": "#/defs/stratifyTransform"
        },
        {
          "$ref": "#/defs/treeTransform"
        },
        {
          "$ref": "#/defs/treemapTransform"
        },
        {
          "$ref": "#/defs/voronoiTransform"
        },
        {
          "$ref": "#/defs/wordcloudTransform"
        },
        {
          "$ref": "#/defs/crossfilterTransform"
        },
        {
          "$ref": "#/defs/resolvefilterTransform"
        }
      ]
    },
    "aggregateTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "aggregate"
          ]
        },
        "signal": {
          "type": "string"
        },
        "groupby": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/refs/scaleField"
                  },
                  {
                    "$ref": "#/refs/paramField"
                  },
                  {
                    "$ref": "#/refs/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "ops": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "enum": [
                      "values",
                      "count",
                      "__count__",
                      "missing",
                      "valid",
                      "sum",
                      "mean",
                      "average",
                      "variance",
                      "variancep",
                      "stdev",
                      "stdevp",
                      "stderr",
                      "distinct",
                      "ci0",
                      "ci1",
                      "median",
                      "q1",
                      "q3",
                      "argmin",
                      "argmax",
                      "min",
                      "max"
                    ]
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "fields": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/refs/scaleField"
                  },
                  {
                    "$ref": "#/refs/paramField"
                  },
                  {
                    "$ref": "#/refs/expr"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/refs/signal"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "drop": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": true
        },
        "cross": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "key": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type"
      ]
    },
    "binTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "bin"
          ]
        },
        "signal": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        },
        "anchor": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "maxbins": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": 20
        },
        "base": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": 10
        },
        "divide": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": [
            5,
            2
          ]
        },
        "extent": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 2,
          "minItems": 2
        },
        "step": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "steps": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "minstep": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "nice": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": true
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 2,
          "minItems": 2,
          "default": [
            "bin0",
            "bin1"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type",
        "field",
        "extent"
      ]
    },
    "collectTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "collect"
          ]
        },
        "signal": {
          "type": "string"
        },
        "sort": {
          "$ref": "#/refs/compare"
        }
      },
      "additionalProperties": false,
      "required": [
        "type"
      ]
    },
    "countpatternTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "countpattern"
          ]
        },
        "signal": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        },
        "case": {
          "anyOf": [
            {
              "enum": [
                "upper",
                "lower",
                "mixed"
              ]
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": "mixed"
        },
        "pattern": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": "[\\w\"]+"
        },
        "stopwords": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 2,
          "minItems": 2,
          "default": [
            "text",
            "count"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type",
        "field"
      ]
    },
    "crossTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "cross"
          ]
        },
        "signal": {
          "type": "string"
        },
        "filter": {
          "$ref": "#/refs/exprString"
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 2,
          "minItems": 2,
          "default": [
            "a",
            "b"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type"
      ]
    },
    "densityTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "density"
          ]
        },
        "signal": {
          "type": "string"
        },
        "extent": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 2,
          "minItems": 2
        },
        "steps": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": 100
        },
        "method": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": "pdf"
        },
        "distribution": {
          "oneOf": [
            {
              "type": "object",
              "properties": {
                "function": {
                  "enum": [
                    "normal"
                  ]
                },
                "mean": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "$ref": "#/refs/signal"
                    }
                  ]
                },
                "stdev": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "$ref": "#/refs/signal"
                    }
                  ],
                  "default": 1
                }
              },
              "additionalProperties": false,
              "required": [
                "function"
              ]
            },
            {
              "type": "object",
              "properties": {
                "function": {
                  "enum": [
                    "uniform"
                  ]
                },
                "min": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "$ref": "#/refs/signal"
                    }
                  ]
                },
                "max": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "$ref": "#/refs/signal"
                    }
                  ],
                  "default": 1
                }
              },
              "additionalProperties": false,
              "required": [
                "function"
              ]
            },
            {
              "type": "object",
              "properties": {
                "function": {
                  "enum": [
                    "kde"
                  ]
                },
                "field": {
                  "oneOf": [
                    {
                      "$ref": "#/refs/scaleField"
                    },
                    {
                      "$ref": "#/refs/paramField"
                    },
                    {
                      "$ref": "#/refs/expr"
                    }
                  ]
                },
                "from": {
                  "type": "string"
                },
                "bandwidth": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "$ref": "#/refs/signal"
                    }
                  ]
                }
              },
              "additionalProperties": false,
              "required": [
                "function",
                "field"
              ]
            },
            {
              "type": "object",
              "properties": {
                "function": {
                  "enum": [
                    "mixture"
                  ]
                },
                "distributions": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {}
                    },
                    {
                      "$ref": "#/refs/signal"
                    }
                  ]
                },
                "weights": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "$ref": "#/refs/signal"
                          }
                        ]
                      }
                    },
                    {
                      "$ref": "#/refs/signal"
                    }
                  ]
                }
              },
              "additionalProperties": false,
              "required": [
                "function"
              ]
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": [
            "value",
            "density"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type"
      ]
    },
    "extentTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "extent"
          ]
        },
        "signal": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type",
        "field"
      ]
    },
    "filterTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "filter"
          ]
        },
        "signal": {
          "type": "string"
        },
        "expr": {
          "$ref": "#/refs/exprString"
        }
      },
      "additionalProperties": false,
      "required": [
        "type",
        "expr"
      ]
    },
    "flattenTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "flatten"
          ]
        },
        "signal": {
          "type": "string"
        },
        "fields": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/refs/scaleField"
                  },
                  {
                    "$ref": "#/refs/paramField"
                  },
                  {
                    "$ref": "#/refs/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type",
        "fields"
      ]
    },
    "foldTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "fold"
          ]
        },
        "signal": {
          "type": "string"
        },
        "fields": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/refs/scaleField"
                  },
                  {
                    "$ref": "#/refs/paramField"
                  },
                  {
                    "$ref": "#/refs/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 2,
          "minItems": 2,
          "default": [
            "key",
            "value"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type",
        "fields"
      ]
    },
    "formulaTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "formula"
          ]
        },
        "signal": {
          "type": "string"
        },
        "expr": {
          "$ref": "#/refs/exprString"
        },
        "as": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "initonly": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type",
        "expr",
        "as"
      ]
    },
    "imputeTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "impute"
          ]
        },
        "signal": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        },
        "key": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        },
        "keyvals": {
          "oneOf": [
            {
              "type": "array",
              "items": {}
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "groupby": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/refs/scaleField"
                  },
                  {
                    "$ref": "#/refs/paramField"
                  },
                  {
                    "$ref": "#/refs/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "method": {
          "anyOf": [
            {
              "enum": [
                "value",
                "mean",
                "median",
                "max",
                "min"
              ]
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": "value"
        },
        "value": {}
      },
      "additionalProperties": false,
      "required": [
        "type",
        "field",
        "key"
      ]
    },
    "joinaggregateTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "joinaggregate"
          ]
        },
        "signal": {
          "type": "string"
        },
        "groupby": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/refs/scaleField"
                  },
                  {
                    "$ref": "#/refs/paramField"
                  },
                  {
                    "$ref": "#/refs/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "fields": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/refs/scaleField"
                  },
                  {
                    "$ref": "#/refs/paramField"
                  },
                  {
                    "$ref": "#/refs/expr"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "ops": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "enum": [
                      "values",
                      "count",
                      "__count__",
                      "missing",
                      "valid",
                      "sum",
                      "mean",
                      "average",
                      "variance",
                      "variancep",
                      "stdev",
                      "stdevp",
                      "stderr",
                      "distinct",
                      "ci0",
                      "ci1",
                      "median",
                      "q1",
                      "q3",
                      "argmin",
                      "argmax",
                      "min",
                      "max"
                    ]
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/refs/signal"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "key": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type"
      ]
    },
    "lookupTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "lookup"
          ]
        },
        "signal": {
          "type": "string"
        },
        "from": {
          "type": "string"
        },
        "key": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        },
        "values": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/refs/scaleField"
                  },
                  {
                    "$ref": "#/refs/paramField"
                  },
                  {
                    "$ref": "#/refs/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "fields": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/refs/scaleField"
                  },
                  {
                    "$ref": "#/refs/paramField"
                  },
                  {
                    "$ref": "#/refs/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "default": {}
      },
      "additionalProperties": false,
      "required": [
        "type",
        "from",
        "key",
        "fields"
      ]
    },
    "pivotTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "pivot"
          ]
        },
        "signal": {
          "type": "string"
        },
        "groupby": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/refs/scaleField"
                  },
                  {
                    "$ref": "#/refs/paramField"
                  },
                  {
                    "$ref": "#/refs/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        },
        "value": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        },
        "op": {
          "anyOf": [
            {
              "enum": [
                "values",
                "count",
                "__count__",
                "missing",
                "valid",
                "sum",
                "mean",
                "average",
                "variance",
                "variancep",
                "stdev",
                "stdevp",
                "stderr",
                "distinct",
                "ci0",
                "ci1",
                "median",
                "q1",
                "q3",
                "argmin",
                "argmax",
                "min",
                "max"
              ]
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": "sum"
        },
        "limit": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "key": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type",
        "field",
        "value"
      ]
    },
    "projectTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "project"
          ]
        },
        "signal": {
          "type": "string"
        },
        "fields": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/refs/scaleField"
                  },
                  {
                    "$ref": "#/refs/paramField"
                  },
                  {
                    "$ref": "#/refs/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/refs/signal"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type"
      ]
    },
    "sampleTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "sample"
          ]
        },
        "signal": {
          "type": "string"
        },
        "size": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": 1000
        }
      },
      "additionalProperties": false,
      "required": [
        "type"
      ]
    },
    "sequenceTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "sequence"
          ]
        },
        "signal": {
          "type": "string"
        },
        "start": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "stop": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "step": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": 1
        },
        "as": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": "data"
        }
      },
      "additionalProperties": false,
      "required": [
        "type",
        "start",
        "stop"
      ]
    },
    "windowTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "window"
          ]
        },
        "signal": {
          "type": "string"
        },
        "sort": {
          "$ref": "#/refs/compare"
        },
        "groupby": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/refs/scaleField"
                  },
                  {
                    "$ref": "#/refs/paramField"
                  },
                  {
                    "$ref": "#/refs/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "ops": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "enum": [
                      "row_number",
                      "rank",
                      "dense_rank",
                      "percent_rank",
                      "cume_dist",
                      "ntile",
                      "lag",
                      "lead",
                      "first_value",
                      "last_value",
                      "nth_value",
                      "values",
                      "count",
                      "__count__",
                      "missing",
                      "valid",
                      "sum",
                      "mean",
                      "average",
                      "variance",
                      "variancep",
                      "stdev",
                      "stdevp",
                      "stderr",
                      "distinct",
                      "ci0",
                      "ci1",
                      "median",
                      "q1",
                      "q3",
                      "argmin",
                      "argmax",
                      "min",
                      "max"
                    ]
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "params": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/refs/signal"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "fields": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/refs/scaleField"
                  },
                  {
                    "$ref": "#/refs/paramField"
                  },
                  {
                    "$ref": "#/refs/expr"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/refs/signal"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "frame": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/refs/signal"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 2,
          "minItems": 2,
          "default": [
            null,
            0
          ]
        },
        "ignorePeers": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type"
      ]
    },
    "identifierTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "identifier"
          ]
        },
        "signal": {
          "type": "string"
        },
        "as": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type",
        "as"
      ]
    },
    "linkpathTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "linkpath"
          ]
        },
        "signal": {
          "type": "string"
        },
        "sourceX": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ],
          "default": "source.x"
        },
        "sourceY": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ],
          "default": "source.y"
        },
        "targetX": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ],
          "default": "target.x"
        },
        "targetY": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ],
          "default": "target.y"
        },
        "orient": {
          "anyOf": [
            {
              "enum": [
                "horizontal",
                "vertical",
                "radial"
              ]
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": "vertical"
        },
        "shape": {
          "anyOf": [
            {
              "enum": [
                "line",
                "arc",
                "curve",
                "diagonal",
                "orthogonal"
              ]
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": "line"
        },
        "require": {
          "$ref": "#/refs/signal"
        },
        "as": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": "path"
        }
      },
      "additionalProperties": false,
      "required": [
        "type"
      ]
    },
    "pieTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "pie"
          ]
        },
        "signal": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        },
        "startAngle": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "endAngle": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": 6.283185307179586
        },
        "sort": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 2,
          "minItems": 2,
          "default": [
            "startAngle",
            "endAngle"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type"
      ]
    },
    "stackTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "stack"
          ]
        },
        "signal": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        },
        "groupby": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/refs/scaleField"
                  },
                  {
                    "$ref": "#/refs/paramField"
                  },
                  {
                    "$ref": "#/refs/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "sort": {
          "$ref": "#/refs/compare"
        },
        "offset": {
          "anyOf": [
            {
              "enum": [
                "zero",
                "center",
                "normalize"
              ]
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": "zero"
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 2,
          "minItems": 2,
          "default": [
            "y0",
            "y1"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type"
      ]
    },
    "contourTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "contour"
          ]
        },
        "signal": {
          "type": "string"
        },
        "size": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 2,
          "minItems": 2
        },
        "values": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "x": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        },
        "y": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        },
        "weight": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        },
        "cellSize": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "bandwidth": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "count": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "smooth": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "nice": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "thresholds": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type",
        "size"
      ]
    },
    "geojsonTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "geojson"
          ]
        },
        "signal": {
          "type": "string"
        },
        "fields": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/refs/scaleField"
                  },
                  {
                    "$ref": "#/refs/paramField"
                  },
                  {
                    "$ref": "#/refs/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 2,
          "minItems": 2
        },
        "geojson": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type"
      ]
    },
    "geopathTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "geopath"
          ]
        },
        "signal": {
          "type": "string"
        },
        "projection": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        },
        "pointRadius": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            },
            {
              "$ref": "#/refs/expr"
            },
            {
              "$ref": "#/refs/paramField"
            }
          ]
        },
        "as": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": "path"
        }
      },
      "additionalProperties": false,
      "required": [
        "type"
      ]
    },
    "geopointTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "geopoint"
          ]
        },
        "signal": {
          "type": "string"
        },
        "projection": {
          "type": "string"
        },
        "fields": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/refs/scaleField"
                  },
                  {
                    "$ref": "#/refs/paramField"
                  },
                  {
                    "$ref": "#/refs/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 2,
          "minItems": 2
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 2,
          "minItems": 2,
          "default": [
            "x",
            "y"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type",
        "projection",
        "fields"
      ]
    },
    "geoshapeTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "geoshape"
          ]
        },
        "signal": {
          "type": "string"
        },
        "projection": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ],
          "default": "datum"
        },
        "pointRadius": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            },
            {
              "$ref": "#/refs/expr"
            },
            {
              "$ref": "#/refs/paramField"
            }
          ]
        },
        "as": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": "shape"
        }
      },
      "additionalProperties": false,
      "required": [
        "type"
      ]
    },
    "graticuleTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "graticule"
          ]
        },
        "signal": {
          "type": "string"
        },
        "extent": {
          "oneOf": [
            {
              "type": "array",
              "items": {}
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 2,
          "minItems": 2
        },
        "extentMajor": {
          "oneOf": [
            {
              "type": "array",
              "items": {}
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 2,
          "minItems": 2
        },
        "extentMinor": {
          "oneOf": [
            {
              "type": "array",
              "items": {}
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 2,
          "minItems": 2
        },
        "step": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 2,
          "minItems": 2
        },
        "stepMajor": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 2,
          "minItems": 2,
          "default": [
            90,
            360
          ]
        },
        "stepMinor": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 2,
          "minItems": 2,
          "default": [
            10,
            10
          ]
        },
        "precision": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": 2.5
        }
      },
      "additionalProperties": false,
      "required": [
        "type"
      ]
    },
    "forceTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "force"
          ]
        },
        "signal": {
          "type": "string"
        },
        "static": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "restart": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "iterations": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": 300
        },
        "alpha": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": 1
        },
        "alphaMin": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": 0.001
        },
        "alphaTarget": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "velocityDecay": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": 0.4
        },
        "forces": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "force": {
                    "enum": [
                      "center"
                    ]
                  },
                  "x": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/refs/signal"
                      }
                    ]
                  },
                  "y": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/refs/signal"
                      }
                    ]
                  }
                },
                "additionalProperties": false,
                "required": [
                  "force"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "force": {
                    "enum": [
                      "collide"
                    ]
                  },
                  "radius": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/refs/signal"
                      },
                      {
                        "$ref": "#/refs/expr"
                      },
                      {
                        "$ref": "#/refs/paramField"
                      }
                    ]
                  },
                  "strength": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/refs/signal"
                      }
                    ],
                    "default": 0.7
                  },
                  "iterations": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/refs/signal"
                      }
                    ],
                    "default": 1
                  }
                },
                "additionalProperties": false,
                "required": [
                  "force"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "force": {
                    "enum": [
                      "nbody"
                    ]
                  },
                  "strength": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/refs/signal"
                      }
                    ],
                    "default": -30
                  },
                  "theta": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/refs/signal"
                      }
                    ],
                    "default": 0.9
                  },
                  "distanceMin": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/refs/signal"
                      }
                    ],
                    "default": 1
                  },
                  "distanceMax": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/refs/signal"
                      }
                    ]
                  }
                },
                "additionalProperties": false,
                "required": [
                  "force"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "force": {
                    "enum": [
                      "link"
                    ]
                  },
                  "links": {
                    "type": "string"
                  },
                  "id": {
                    "oneOf": [
                      {
                        "$ref": "#/refs/scaleField"
                      },
                      {
                        "$ref": "#/refs/paramField"
                      },
                      {
                        "$ref": "#/refs/expr"
                      }
                    ]
                  },
                  "distance": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/refs/signal"
                      },
                      {
                        "$ref": "#/refs/expr"
                      },
                      {
                        "$ref": "#/refs/paramField"
                      }
                    ],
                    "default": 30
                  },
                  "strength": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/refs/signal"
                      },
                      {
                        "$ref": "#/refs/expr"
                      },
                      {
                        "$ref": "#/refs/paramField"
                      }
                    ]
                  },
                  "iterations": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/refs/signal"
                      }
                    ],
                    "default": 1
                  }
                },
                "additionalProperties": false,
                "required": [
                  "force"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "force": {
                    "enum": [
                      "x"
                    ]
                  },
                  "strength": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/refs/signal"
                      }
                    ],
                    "default": 0.1
                  },
                  "x": {
                    "oneOf": [
                      {
                        "$ref": "#/refs/scaleField"
                      },
                      {
                        "$ref": "#/refs/paramField"
                      },
                      {
                        "$ref": "#/refs/expr"
                      }
                    ]
                  }
                },
                "additionalProperties": false,
                "required": [
                  "force"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "force": {
                    "enum": [
                      "y"
                    ]
                  },
                  "strength": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "$ref": "#/refs/signal"
                      }
                    ],
                    "default": 0.1
                  },
                  "y": {
                    "oneOf": [
                      {
                        "$ref": "#/refs/scaleField"
                      },
                      {
                        "$ref": "#/refs/paramField"
                      },
                      {
                        "$ref": "#/refs/expr"
                      }
                    ]
                  }
                },
                "additionalProperties": false,
                "required": [
                  "force"
                ]
              }
            ]
          }
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": [
            "x",
            "y",
            "vx",
            "vy"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type"
      ]
    },
    "nestTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "nest"
          ]
        },
        "signal": {
          "type": "string"
        },
        "keys": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/refs/scaleField"
                  },
                  {
                    "$ref": "#/refs/paramField"
                  },
                  {
                    "$ref": "#/refs/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "generate": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type"
      ]
    },
    "packTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "pack"
          ]
        },
        "signal": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        },
        "sort": {
          "$ref": "#/refs/compare"
        },
        "padding": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "radius": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        },
        "size": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 2,
          "minItems": 2
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 5,
          "minItems": 5,
          "default": [
            "x",
            "y",
            "r",
            "depth",
            "children"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type"
      ]
    },
    "partitionTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "partition"
          ]
        },
        "signal": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        },
        "sort": {
          "$ref": "#/refs/compare"
        },
        "padding": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "round": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "size": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 2,
          "minItems": 2
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 6,
          "minItems": 6,
          "default": [
            "x0",
            "y0",
            "x1",
            "y1",
            "depth",
            "children"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type"
      ]
    },
    "stratifyTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "stratify"
          ]
        },
        "signal": {
          "type": "string"
        },
        "key": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        },
        "parentKey": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type",
        "key",
        "parentKey"
      ]
    },
    "treeTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "tree"
          ]
        },
        "signal": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        },
        "sort": {
          "$ref": "#/refs/compare"
        },
        "method": {
          "anyOf": [
            {
              "enum": [
                "tidy",
                "cluster"
              ]
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": "tidy"
        },
        "size": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 2,
          "minItems": 2
        },
        "nodeSize": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 2,
          "minItems": 2
        },
        "separation": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": true
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 4,
          "minItems": 4,
          "default": [
            "x",
            "y",
            "depth",
            "children"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type"
      ]
    },
    "treelinksTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "treelinks"
          ]
        },
        "signal": {
          "type": "string"
        }
      },
      "additionalProperties": false,
      "required": [
        "type"
      ]
    },
    "treemapTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "treemap"
          ]
        },
        "signal": {
          "type": "string"
        },
        "field": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        },
        "sort": {
          "$ref": "#/refs/compare"
        },
        "method": {
          "anyOf": [
            {
              "enum": [
                "squarify",
                "resquarify",
                "binary",
                "dice",
                "slice",
                "slicedice"
              ]
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": "squarify"
        },
        "padding": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "paddingInner": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "paddingOuter": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "paddingTop": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "paddingRight": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "paddingBottom": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "paddingLeft": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "ratio": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": 1.618033988749895
        },
        "round": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "size": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 2,
          "minItems": 2
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 6,
          "minItems": 6,
          "default": [
            "x0",
            "y0",
            "x1",
            "y1",
            "depth",
            "children"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type"
      ]
    },
    "voronoiTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "voronoi"
          ]
        },
        "signal": {
          "type": "string"
        },
        "x": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        },
        "y": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        },
        "size": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 2,
          "minItems": 2
        },
        "extent": {
          "oneOf": [
            {
              "type": "array",
              "items": {}
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 2,
          "minItems": 2,
          "default": [
            [
              -100000,
              -100000
            ],
            [
              100000,
              100000
            ]
          ]
        },
        "as": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "default": "path"
        }
      },
      "additionalProperties": false,
      "required": [
        "type",
        "x",
        "y"
      ]
    },
    "wordcloudTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "wordcloud"
          ]
        },
        "signal": {
          "type": "string"
        },
        "size": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 2,
          "minItems": 2
        },
        "font": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/signal"
            },
            {
              "$ref": "#/refs/expr"
            },
            {
              "$ref": "#/refs/paramField"
            }
          ],
          "default": "sans-serif"
        },
        "fontStyle": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/signal"
            },
            {
              "$ref": "#/refs/expr"
            },
            {
              "$ref": "#/refs/paramField"
            }
          ],
          "default": "normal"
        },
        "fontWeight": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/signal"
            },
            {
              "$ref": "#/refs/expr"
            },
            {
              "$ref": "#/refs/paramField"
            }
          ],
          "default": "normal"
        },
        "fontSize": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            },
            {
              "$ref": "#/refs/expr"
            },
            {
              "$ref": "#/refs/paramField"
            }
          ],
          "default": 14
        },
        "fontSizeRange": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            },
            {
              "type": "null"
            }
          ],
          "default": [
            10,
            50
          ]
        },
        "rotate": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            },
            {
              "$ref": "#/refs/expr"
            },
            {
              "$ref": "#/refs/paramField"
            }
          ]
        },
        "text": {
          "oneOf": [
            {
              "$ref": "#/refs/scaleField"
            },
            {
              "$ref": "#/refs/paramField"
            },
            {
              "$ref": "#/refs/expr"
            }
          ]
        },
        "spiral": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "padding": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            },
            {
              "$ref": "#/refs/expr"
            },
            {
              "$ref": "#/refs/paramField"
            }
          ]
        },
        "as": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ],
          "maxItems": 7,
          "minItems": 7,
          "default": [
            "x",
            "y",
            "font",
            "fontSize",
            "fontStyle",
            "fontWeight",
            "angle"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type"
      ]
    },
    "crossfilterTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "crossfilter"
          ]
        },
        "signal": {
          "type": "string"
        },
        "fields": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "$ref": "#/refs/scaleField"
                  },
                  {
                    "$ref": "#/refs/paramField"
                  },
                  {
                    "$ref": "#/refs/expr"
                  }
                ]
              }
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "query": {
          "oneOf": [
            {
              "type": "array",
              "items": {}
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "type",
        "fields",
        "query"
      ]
    },
    "resolvefilterTransform": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "resolvefilter"
          ]
        },
        "signal": {
          "type": "string"
        },
        "ignore": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/signal"
            }
          ]
        },
        "filter": {}
      },
      "additionalProperties": false,
      "required": [
        "type",
        "ignore",
        "filter"
      ]
    }
  },
  "refs": {
    "labelOverlap": {
      "oneOf": [
        {
          "type": "boolean"
        },
        {
          "enum": [
            "parity",
            "greedy"
          ],
          "type": "string"
        },
        {
          "$ref": "#/refs/signal"
        }
      ]
    },
    "tickCount": {
      "oneOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "enum": [
            "millisecond",
            "second",
            "minute",
            "hour",
            "day",
            "week",
            "month",
            "year"
          ]
        },
        {
          "type": "object",
          "properties": {
            "interval": {
              "oneOf": [
                {
                  "type": "string",
                  "enum": [
                    "millisecond",
                    "second",
                    "minute",
                    "hour",
                    "day",
                    "week",
                    "month",
                    "year"
                  ]
                },
                {
                  "$ref": "#/refs/signal"
                }
              ]
            },
            "step": {
              "$ref": "#/refs/numberOrSignal"
            }
          },
          "required": [
            "interval"
          ]
        },
        {
          "$ref": "#/refs/signal"
        }
      ]
    },
    "element": {
      "type": "string"
    },
    "paramField": {
      "type": "object",
      "properties": {
        "field": {
          "type": "string"
        },
        "as": {
          "type": "string"
        }
      },
      "additionalProperties": false,
      "required": [
        "field"
      ]
    },
    "field": {
      "title": "FieldRef",
      "oneOf": [
        {
          "type": "string"
        },
        {
          "oneOf": [
            {
              "$ref": "#/refs/signal"
            },
            {
              "type": "object",
              "properties": {
                "datum": {
                  "$ref": "#/refs/field"
                }
              },
              "required": [
                "datum"
              ],
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "group": {
                  "$ref": "#/refs/field"
                },
                "level": {
                  "type": "number"
                }
              },
              "required": [
                "group"
              ],
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "parent": {
                  "$ref": "#/refs/field"
                },
                "level": {
                  "type": "number"
                }
              },
              "required": [
                "parent"
              ],
              "additionalProperties": false
            }
          ]
        }
      ]
    },
    "scale": {
      "$ref": "#/refs/field"
    },
    "stringModifiers": {
      "properties": {
        "scale": {
          "$ref": "#/refs/scale"
        }
      }
    },
    "numberModifiers": {
      "properties": {
        "exponent": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "mult": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "offset": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "$ref": "#/refs/numberValue"
            }
          ]
        },
        "round": {
          "type": "boolean",
          "default": false
        },
        "scale": {
          "$ref": "#/refs/scale"
        },
        "band": {
          "type": [
            "number",
            "boolean"
          ]
        },
        "extra": {
          "type": "boolean"
        }
      }
    },
    "value": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "allOf": [
              {
                "$ref": "#/defs/rule"
              },
              {
                "type": "object",
                "allOf": [
                  {
                    "$ref": "#/refs/stringModifiers"
                  },
                  {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "$ref": "#/refs/signal"
                          },
                          {
                            "properties": {
                              "value": {
                                "oneOf": [
                                  {
                                    "type": {}
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "value"
                            ]
                          },
                          {
                            "properties": {
                              "field": {
                                "$ref": "#/refs/field"
                              }
                            },
                            "required": [
                              "field"
                            ]
                          },
                          {
                            "properties": {
                              "range": {
                                "type": [
                                  "number",
                                  "boolean"
                                ]
                              }
                            },
                            "required": [
                              "range"
                            ]
                          }
                        ]
                      },
                      {
                        "required": [
                          "scale",
                          "value"
                        ]
                      },
                      {
                        "required": [
                          "scale",
                          "band"
                        ]
                      },
                      {
                        "required": [
                          "offset"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "object",
          "allOf": [
            {
              "$ref": "#/refs/stringModifiers"
            },
            {
              "anyOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/refs/signal"
                    },
                    {
                      "properties": {
                        "value": {
                          "oneOf": [
                            {
                              "type": {}
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    {
                      "properties": {
                        "field": {
                          "$ref": "#/refs/field"
                        }
                      },
                      "required": [
                        "field"
                      ]
                    },
                    {
                      "properties": {
                        "range": {
                          "type": [
                            "number",
                            "boolean"
                          ]
                        }
                      },
                      "required": [
                        "range"
                      ]
                    }
                  ]
                },
                {
                  "required": [
                    "scale",
                    "value"
                  ]
                },
                {
                  "required": [
                    "scale",
                    "band"
                  ]
                },
                {
                  "required": [
                    "offset"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "numberValue": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "allOf": [
              {
                "$ref": "#/defs/rule"
              },
              {
                "type": "object",
                "allOf": [
                  {
                    "$ref": "#/refs/numberModifiers"
                  },
                  {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "$ref": "#/refs/signal"
                          },
                          {
                            "properties": {
                              "value": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "value"
                            ]
                          },
                          {
                            "properties": {
                              "field": {
                                "$ref": "#/refs/field"
                              }
                            },
                            "required": [
                              "field"
                            ]
                          },
                          {
                            "properties": {
                              "range": {
                                "type": [
                                  "number",
                                  "boolean"
                                ]
                              }
                            },
                            "required": [
                              "range"
                            ]
                          }
                        ]
                      },
                      {
                        "required": [
                          "scale",
                          "value"
                        ]
                      },
                      {
                        "required": [
                          "scale",
                          "band"
                        ]
                      },
                      {
                        "required": [
                          "offset"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "object",
          "allOf": [
            {
              "$ref": "#/refs/numberModifiers"
            },
            {
              "anyOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/refs/signal"
                    },
                    {
                      "properties": {
                        "value": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    {
                      "properties": {
                        "field": {
                          "$ref": "#/refs/field"
                        }
                      },
                      "required": [
                        "field"
                      ]
                    },
                    {
                      "properties": {
                        "range": {
                          "type": [
                            "number",
                            "boolean"
                          ]
                        }
                      },
                      "required": [
                        "range"
                      ]
                    }
                  ]
                },
                {
                  "required": [
                    "scale",
                    "value"
                  ]
                },
                {
                  "required": [
                    "scale",
                    "band"
                  ]
                },
                {
                  "required": [
                    "offset"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "stringValue": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "allOf": [
              {
                "$ref": "#/defs/rule"
              },
              {
                "type": "object",
                "allOf": [
                  {
                    "$ref": "#/refs/stringModifiers"
                  },
                  {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "$ref": "#/refs/signal"
                          },
                          {
                            "properties": {
                              "value": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "value"
                            ]
                          },
                          {
                            "properties": {
                              "field": {
                                "$ref": "#/refs/field"
                              }
                            },
                            "required": [
                              "field"
                            ]
                          },
                          {
                            "properties": {
                              "range": {
                                "type": [
                                  "number",
                                  "boolean"
                                ]
                              }
                            },
                            "required": [
                              "range"
                            ]
                          }
                        ]
                      },
                      {
                        "required": [
                          "scale",
                          "value"
                        ]
                      },
                      {
                        "required": [
                          "scale",
                          "band"
                        ]
                      },
                      {
                        "required": [
                          "offset"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "object",
          "allOf": [
            {
              "$ref": "#/refs/stringModifiers"
            },
            {
              "anyOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/refs/signal"
                    },
                    {
                      "properties": {
                        "value": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    {
                      "properties": {
                        "field": {
                          "$ref": "#/refs/field"
                        }
                      },
                      "required": [
                        "field"
                      ]
                    },
                    {
                      "properties": {
                        "range": {
                          "type": [
                            "number",
                            "boolean"
                          ]
                        }
                      },
                      "required": [
                        "range"
                      ]
                    }
                  ]
                },
                {
                  "required": [
                    "scale",
                    "value"
                  ]
                },
                {
                  "required": [
                    "scale",
                    "band"
                  ]
                },
                {
                  "required": [
                    "offset"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "booleanValue": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "allOf": [
              {
                "$ref": "#/defs/rule"
              },
              {
                "type": "object",
                "allOf": [
                  {
                    "$ref": "#/refs/stringModifiers"
                  },
                  {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "$ref": "#/refs/signal"
                          },
                          {
                            "properties": {
                              "value": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "value"
                            ]
                          },
                          {
                            "properties": {
                              "field": {
                                "$ref": "#/refs/field"
                              }
                            },
                            "required": [
                              "field"
                            ]
                          },
                          {
                            "properties": {
                              "range": {
                                "type": [
                                  "number",
                                  "boolean"
                                ]
                              }
                            },
                            "required": [
                              "range"
                            ]
                          }
                        ]
                      },
                      {
                        "required": [
                          "scale",
                          "value"
                        ]
                      },
                      {
                        "required": [
                          "scale",
                          "band"
                        ]
                      },
                      {
                        "required": [
                          "offset"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "object",
          "allOf": [
            {
              "$ref": "#/refs/stringModifiers"
            },
            {
              "anyOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/refs/signal"
                    },
                    {
                      "properties": {
                        "value": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    {
                      "properties": {
                        "field": {
                          "$ref": "#/refs/field"
                        }
                      },
                      "required": [
                        "field"
                      ]
                    },
                    {
                      "properties": {
                        "range": {
                          "type": [
                            "number",
                            "boolean"
                          ]
                        }
                      },
                      "required": [
                        "range"
                      ]
                    }
                  ]
                },
                {
                  "required": [
                    "scale",
                    "value"
                  ]
                },
                {
                  "required": [
                    "scale",
                    "band"
                  ]
                },
                {
                  "required": [
                    "offset"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "arrayValue": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "allOf": [
              {
                "$ref": "#/defs/rule"
              },
              {
                "type": "object",
                "allOf": [
                  {
                    "$ref": "#/refs/stringModifiers"
                  },
                  {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "$ref": "#/refs/signal"
                          },
                          {
                            "properties": {
                              "value": {
                                "type": "array"
                              }
                            },
                            "required": [
                              "value"
                            ]
                          },
                          {
                            "properties": {
                              "field": {
                                "$ref": "#/refs/field"
                              }
                            },
                            "required": [
                              "field"
                            ]
                          },
                          {
                            "properties": {
                              "range": {
                                "type": [
                                  "number",
                                  "boolean"
                                ]
                              }
                            },
                            "required": [
                              "range"
                            ]
                          }
                        ]
                      },
                      {
                        "required": [
                          "scale",
                          "value"
                        ]
                      },
                      {
                        "required": [
                          "scale",
                          "band"
                        ]
                      },
                      {
                        "required": [
                          "offset"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "object",
          "allOf": [
            {
              "$ref": "#/refs/stringModifiers"
            },
            {
              "anyOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/refs/signal"
                    },
                    {
                      "properties": {
                        "value": {
                          "type": "array"
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    {
                      "properties": {
                        "field": {
                          "$ref": "#/refs/field"
                        }
                      },
                      "required": [
                        "field"
                      ]
                    },
                    {
                      "properties": {
                        "range": {
                          "type": [
                            "number",
                            "boolean"
                          ]
                        }
                      },
                      "required": [
                        "range"
                      ]
                    }
                  ]
                },
                {
                  "required": [
                    "scale",
                    "value"
                  ]
                },
                {
                  "required": [
                    "scale",
                    "band"
                  ]
                },
                {
                  "required": [
                    "offset"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "nullableStringValue": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "allOf": [
              {
                "$ref": "#/defs/rule"
              },
              {
                "type": "object",
                "allOf": [
                  {
                    "$ref": "#/refs/stringModifiers"
                  },
                  {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "$ref": "#/refs/signal"
                          },
                          {
                            "properties": {
                              "value": {
                                "oneOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "value"
                            ]
                          },
                          {
                            "properties": {
                              "field": {
                                "$ref": "#/refs/field"
                              }
                            },
                            "required": [
                              "field"
                            ]
                          },
                          {
                            "properties": {
                              "range": {
                                "type": [
                                  "number",
                                  "boolean"
                                ]
                              }
                            },
                            "required": [
                              "range"
                            ]
                          }
                        ]
                      },
                      {
                        "required": [
                          "scale",
                          "value"
                        ]
                      },
                      {
                        "required": [
                          "scale",
                          "band"
                        ]
                      },
                      {
                        "required": [
                          "offset"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "object",
          "allOf": [
            {
              "$ref": "#/refs/stringModifiers"
            },
            {
              "anyOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/refs/signal"
                    },
                    {
                      "properties": {
                        "value": {
                          "oneOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    {
                      "properties": {
                        "field": {
                          "$ref": "#/refs/field"
                        }
                      },
                      "required": [
                        "field"
                      ]
                    },
                    {
                      "properties": {
                        "range": {
                          "type": [
                            "number",
                            "boolean"
                          ]
                        }
                      },
                      "required": [
                        "range"
                      ]
                    }
                  ]
                },
                {
                  "required": [
                    "scale",
                    "value"
                  ]
                },
                {
                  "required": [
                    "scale",
                    "band"
                  ]
                },
                {
                  "required": [
                    "offset"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "fontWeightValue": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "allOf": [
              {
                "$ref": "#/defs/rule"
              },
              {
                "type": "object",
                "allOf": [
                  {
                    "$ref": "#/refs/stringModifiers"
                  },
                  {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "$ref": "#/refs/signal"
                          },
                          {
                            "properties": {
                              "value": {
                                "enum": [
                                  null,
                                  "normal",
                                  "bold",
                                  "lighter",
                                  "bolder",
                                  "100",
                                  "200",
                                  "300",
                                  "400",
                                  "500",
                                  "600",
                                  "700",
                                  "800",
                                  "900",
                                  100,
                                  200,
                                  300,
                                  400,
                                  500,
                                  600,
                                  700,
                                  800,
                                  900
                                ]
                              }
                            },
                            "required": [
                              "value"
                            ]
                          },
                          {
                            "properties": {
                              "field": {
                                "$ref": "#/refs/field"
                              }
                            },
                            "required": [
                              "field"
                            ]
                          },
                          {
                            "properties": {
                              "range": {
                                "type": [
                                  "number",
                                  "boolean"
                                ]
                              }
                            },
                            "required": [
                              "range"
                            ]
                          }
                        ]
                      },
                      {
                        "required": [
                          "scale",
                          "value"
                        ]
                      },
                      {
                        "required": [
                          "scale",
                          "band"
                        ]
                      },
                      {
                        "required": [
                          "offset"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "object",
          "allOf": [
            {
              "$ref": "#/refs/stringModifiers"
            },
            {
              "anyOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/refs/signal"
                    },
                    {
                      "properties": {
                        "value": {
                          "enum": [
                            null,
                            "normal",
                            "bold",
                            "lighter",
                            "bolder",
                            "100",
                            "200",
                            "300",
                            "400",
                            "500",
                            "600",
                            "700",
                            "800",
                            "900",
                            100,
                            200,
                            300,
                            400,
                            500,
                            600,
                            700,
                            800,
                            900
                          ]
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    {
                      "properties": {
                        "field": {
                          "$ref": "#/refs/field"
                        }
                      },
                      "required": [
                        "field"
                      ]
                    },
                    {
                      "properties": {
                        "range": {
                          "type": [
                            "number",
                            "boolean"
                          ]
                        }
                      },
                      "required": [
                        "range"
                      ]
                    }
                  ]
                },
                {
                  "required": [
                    "scale",
                    "value"
                  ]
                },
                {
                  "required": [
                    "scale",
                    "band"
                  ]
                },
                {
                  "required": [
                    "offset"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "alignValue": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "allOf": [
              {
                "$ref": "#/defs/rule"
              },
              {
                "type": "object",
                "allOf": [
                  {
                    "$ref": "#/refs/stringModifiers"
                  },
                  {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "$ref": "#/refs/signal"
                          },
                          {
                            "properties": {
                              "value": {
                                "enum": [
                                  "left",
                                  "right",
                                  "center"
                                ]
                              }
                            },
                            "required": [
                              "value"
                            ]
                          },
                          {
                            "properties": {
                              "field": {
                                "$ref": "#/refs/field"
                              }
                            },
                            "required": [
                              "field"
                            ]
                          },
                          {
                            "properties": {
                              "range": {
                                "type": [
                                  "number",
                                  "boolean"
                                ]
                              }
                            },
                            "required": [
                              "range"
                            ]
                          }
                        ]
                      },
                      {
                        "required": [
                          "scale",
                          "value"
                        ]
                      },
                      {
                        "required": [
                          "scale",
                          "band"
                        ]
                      },
                      {
                        "required": [
                          "offset"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "object",
          "allOf": [
            {
              "$ref": "#/refs/stringModifiers"
            },
            {
              "anyOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/refs/signal"
                    },
                    {
                      "properties": {
                        "value": {
                          "enum": [
                            "left",
                            "right",
                            "center"
                          ]
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    {
                      "properties": {
                        "field": {
                          "$ref": "#/refs/field"
                        }
                      },
                      "required": [
                        "field"
                      ]
                    },
                    {
                      "properties": {
                        "range": {
                          "type": [
                            "number",
                            "boolean"
                          ]
                        }
                      },
                      "required": [
                        "range"
                      ]
                    }
                  ]
                },
                {
                  "required": [
                    "scale",
                    "value"
                  ]
                },
                {
                  "required": [
                    "scale",
                    "band"
                  ]
                },
                {
                  "required": [
                    "offset"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "baselineValue": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "allOf": [
              {
                "$ref": "#/defs/rule"
              },
              {
                "type": "object",
                "allOf": [
                  {
                    "$ref": "#/refs/stringModifiers"
                  },
                  {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "$ref": "#/refs/signal"
                          },
                          {
                            "properties": {
                              "value": {
                                "enum": [
                                  "top",
                                  "middle",
                                  "bottom",
                                  "alphabetic"
                                ]
                              }
                            },
                            "required": [
                              "value"
                            ]
                          },
                          {
                            "properties": {
                              "field": {
                                "$ref": "#/refs/field"
                              }
                            },
                            "required": [
                              "field"
                            ]
                          },
                          {
                            "properties": {
                              "range": {
                                "type": [
                                  "number",
                                  "boolean"
                                ]
                              }
                            },
                            "required": [
                              "range"
                            ]
                          }
                        ]
                      },
                      {
                        "required": [
                          "scale",
                          "value"
                        ]
                      },
                      {
                        "required": [
                          "scale",
                          "band"
                        ]
                      },
                      {
                        "required": [
                          "offset"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "object",
          "allOf": [
            {
              "$ref": "#/refs/stringModifiers"
            },
            {
              "anyOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/refs/signal"
                    },
                    {
                      "properties": {
                        "value": {
                          "enum": [
                            "top",
                            "middle",
                            "bottom",
                            "alphabetic"
                          ]
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    {
                      "properties": {
                        "field": {
                          "$ref": "#/refs/field"
                        }
                      },
                      "required": [
                        "field"
                      ]
                    },
                    {
                      "properties": {
                        "range": {
                          "type": [
                            "number",
                            "boolean"
                          ]
                        }
                      },
                      "required": [
                        "range"
                      ]
                    }
                  ]
                },
                {
                  "required": [
                    "scale",
                    "value"
                  ]
                },
                {
                  "required": [
                    "scale",
                    "band"
                  ]
                },
                {
                  "required": [
                    "offset"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "orientValue": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "allOf": [
              {
                "$ref": "#/defs/rule"
              },
              {
                "type": "object",
                "allOf": [
                  {
                    "$ref": "#/refs/stringModifiers"
                  },
                  {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "$ref": "#/refs/signal"
                          },
                          {
                            "properties": {
                              "value": {
                                "enum": [
                                  "horizontal",
                                  "vertical"
                                ]
                              }
                            },
                            "required": [
                              "value"
                            ]
                          },
                          {
                            "properties": {
                              "field": {
                                "$ref": "#/refs/field"
                              }
                            },
                            "required": [
                              "field"
                            ]
                          },
                          {
                            "properties": {
                              "range": {
                                "type": [
                                  "number",
                                  "boolean"
                                ]
                              }
                            },
                            "required": [
                              "range"
                            ]
                          }
                        ]
                      },
                      {
                        "required": [
                          "scale",
                          "value"
                        ]
                      },
                      {
                        "required": [
                          "scale",
                          "band"
                        ]
                      },
                      {
                        "required": [
                          "offset"
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "object",
          "allOf": [
            {
              "$ref": "#/refs/stringModifiers"
            },
            {
              "anyOf": [
                {
                  "oneOf": [
                    {
                      "$ref": "#/refs/signal"
                    },
                    {
                      "properties": {
                        "value": {
                          "enum": [
                            "horizontal",
                            "vertical"
                          ]
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    {
                      "properties": {
                        "field": {
                          "$ref": "#/refs/field"
                        }
                      },
                      "required": [
                        "field"
                      ]
                    },
                    {
                      "properties": {
                        "range": {
                          "type": [
                            "number",
                            "boolean"
                          ]
                        }
                      },
                      "required": [
                        "range"
                      ]
                    }
                  ]
                },
                {
                  "required": [
                    "scale",
                    "value"
                  ]
                },
                {
                  "required": [
                    "scale",
                    "band"
                  ]
                },
                {
                  "required": [
                    "offset"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "colorRGB": {
      "type": "object",
      "properties": {
        "r": {
          "$ref": "#/refs/numberValue"
        },
        "g": {
          "$ref": "#/refs/numberValue"
        },
        "b": {
          "$ref": "#/refs/numberValue"
        }
      },
      "required": [
        "r",
        "g",
        "b"
      ]
    },
    "colorHSL": {
      "type": "object",
      "properties": {
        "h": {
          "$ref": "#/refs/numberValue"
        },
        "s": {
          "$ref": "#/refs/numberValue"
        },
        "l": {
          "$ref": "#/refs/numberValue"
        }
      },
      "required": [
        "h",
        "s",
        "l"
      ]
    },
    "colorLAB": {
      "type": "object",
      "properties": {
        "l": {
          "$ref": "#/refs/numberValue"
        },
        "a": {
          "$ref": "#/refs/numberValue"
        },
        "b": {
          "$ref": "#/refs/numberValue"
        }
      },
      "required": [
        "l",
        "a",
        "b"
      ]
    },
    "colorHCL": {
      "type": "object",
      "properties": {
        "h": {
          "$ref": "#/refs/numberValue"
        },
        "c": {
          "$ref": "#/refs/numberValue"
        },
        "l": {
          "$ref": "#/refs/numberValue"
        }
      },
      "required": [
        "h",
        "c",
        "l"
      ]
    },
    "colorValue": {
      "title": "ColorRef",
      "oneOf": [
        {
          "$ref": "#/refs/nullableStringValue"
        },
        {
          "type": "object",
          "properties": {
            "gradient": {
              "$ref": "#/refs/scale"
            }
          },
          "additionalProperties": false,
          "required": [
            "gradient"
          ]
        },
        {
          "type": "object",
          "properties": {
            "color": {
              "oneOf": [
                {
                  "$ref": "#/refs/colorRGB"
                },
                {
                  "$ref": "#/refs/colorHSL"
                },
                {
                  "$ref": "#/refs/colorLAB"
                },
                {
                  "$ref": "#/refs/colorHCL"
                }
              ]
            }
          },
          "additionalProperties": false,
          "required": [
            "color"
          ]
        }
      ]
    },
    "expr": {
      "title": "ExpressionRef",
      "type": "object",
      "properties": {
        "expr": {
          "type": "string"
        },
        "as": {
          "type": "string"
        }
      },
      "required": [
        "expr"
      ]
    },
    "exprString": {
      "title": "Expression String",
      "type": "string"
    },
    "compare": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "field": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/refs/signal"
                }
              ]
            },
            "order": {
              "$ref": "#/refs/sortOrder"
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "field": {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              }
            },
            "order": {
              "type": "array",
              "items": {
                "$ref": "#/refs/sortOrder"
              }
            }
          }
        }
      ]
    },
    "from": {
      "type": "object",
      "properties": {
        "data": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "facet": {
      "type": "object",
      "properties": {
        "data": {
          "type": "string"
        },
        "facet": {
          "oneOf": [
            {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "data": {
                  "type": "string"
                },
                "field": {
                  "type": "string"
                }
              },
              "additionalProperties": false,
              "required": [
                "name",
                "data",
                "field"
              ]
            },
            {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "data": {
                  "type": "string"
                },
                "groupby": {
                  "oneOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  ]
                },
                "aggregate": {
                  "type": "object",
                  "properties": {
                    "cross": {
                      "type": "boolean"
                    },
                    "fields": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "ops": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "as": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                }
              },
              "additionalProperties": false,
              "required": [
                "name",
                "data",
                "groupby"
              ]
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "facet"
      ]
    },
    "markclip": {
      "oneOf": [
        {
          "$ref": "#/refs/booleanOrSignal"
        },
        {
          "type": "object",
          "properties": {
            "path": {
              "$ref": "#/refs/stringOrSignal"
            }
          },
          "required": [
            "path"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "sphere": {
              "$ref": "#/refs/stringOrSignal"
            }
          },
          "required": [
            "sphere"
          ],
          "additionalProperties": false
        }
      ]
    },
    "style": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      ]
    },
    "marktype": {
      "title": "Mark Type definition",
      "type": "string"
    },
    "sortOrder": {
      "oneOf": [
        {
          "enum": [
            "ascending",
            "descending"
          ]
        },
        {
          "$ref": "#/refs/signal"
        }
      ]
    },
    "scaleField": {
      "$ref": "#/refs/stringOrSignal"
    },
    "scaleInterpolate": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "#/refs/signal"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "$ref": "#/refs/stringOrSignal"
            },
            "gamma": {
              "$ref": "#/refs/numberOrSignal"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "scaleData": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "data": {
              "type": "string"
            },
            "field": {
              "$ref": "#/refs/scaleField"
            },
            "sort": {
              "oneOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "object",
                  "properties": {
                    "field": {
                      "$ref": "#/refs/scaleField"
                    },
                    "op": {
                      "$ref": "#/refs/scaleField"
                    },
                    "order": {
                      "$ref": "#/refs/sortOrder"
                    }
                  },
                  "additionalProperties": false
                }
              ]
            }
          },
          "required": [
            "data",
            "field"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "data": {
              "type": "string"
            },
            "fields": {
              "type": "array",
              "items": {
                "$ref": "#/refs/scaleField"
              },
              "minItems": 1
            },
            "sort": {
              "oneOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "object",
                  "properties": {
                    "op": {
                      "enum": [
                        "count"
                      ]
                    },
                    "order": {
                      "$ref": "#/refs/sortOrder"
                    }
                  },
                  "additionalProperties": false
                }
              ]
            }
          },
          "required": [
            "data",
            "fields"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "fields": {
              "type": "array",
              "items": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "data": {
                        "type": "string"
                      },
                      "field": {
                        "$ref": "#/refs/scaleField"
                      }
                    },
                    "required": [
                      "data",
                      "field"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "array",
                    "items": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "number"
                        },
                        {
                          "type": "boolean"
                        }
                      ]
                    }
                  },
                  {
                    "$ref": "#/refs/signal"
                  }
                ]
              },
              "minItems": 1
            },
            "sort": {
              "oneOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "object",
                  "properties": {
                    "op": {
                      "enum": [
                        "count"
                      ]
                    },
                    "order": {
                      "$ref": "#/refs/sortOrder"
                    }
                  },
                  "additionalProperties": false
                }
              ]
            }
          },
          "required": [
            "fields"
          ],
          "additionalProperties": false
        }
      ]
    },
    "selector": {
      "title": "Event Selector String",
      "type": "string"
    },
    "signal": {
      "title": "SignalRef",
      "type": "object",
      "properties": {
        "signal": {
          "type": "string"
        }
      },
      "required": [
        "signal"
      ]
    },
    "arrayOrSignal": {
      "oneOf": [
        {
          "type": "array"
        },
        {
          "$ref": "#/refs/signal"
        }
      ]
    },
    "booleanOrSignal": {
      "oneOf": [
        {
          "type": "boolean"
        },
        {
          "$ref": "#/refs/signal"
        }
      ]
    },
    "numberOrSignal": {
      "oneOf": [
        {
          "type": "number"
        },
        {
          "$ref": "#/refs/signal"
        }
      ]
    },
    "stringOrSignal": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "#/refs/signal"
        }
      ]
    }
  },
  "type": "object",
  "allOf": [
    {
      "$ref": "#/defs/scope"
    },
    {
      "properties": {
        "$schema": {
          "type": "string",
          "format": "uri"
        },
        "usermeta": {
          "type": "object"
        },
        "config": {
          "type": "object"
        },
        "description": {
          "type": "string"
        },
        "width": {
          "type": "number"
        },
        "height": {
          "type": "number"
        },
        "padding": {
          "$ref": "#/defs/padding"
        },
        "autosize": {
          "$ref": "#/defs/autosize"
        },
        "background": {
          "$ref": "#/defs/background"
        }
      }
    }
  ]
}