{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://spectoda.com/schemas/controller-config/0.12.11.json",
  "title": "Spectoda Controller config 0.12.11",
  "description": "Firmware-derived schema for Controller config. Unknown keys are rejected so Studio does not silently write ignored configuration.",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "controller": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_]{1,5}$",
          "description": "Controller name/identifier, 1..5 label characters."
        },
        "brightness": {
          "type": "integer",
          "minimum": 0,
          "maximum": 255,
          "description": "Global brightness limit, 0..255."
        },
        "power": {
          "type": "integer",
          "minimum": 0,
          "maximum": 255,
          "description": "Global power limit, 0..255."
        },
        "fps": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "description": "Render frames per second. The selected ESP32 build uses CONFIG_FREERTOS_HZ=100."
        },
        "ups": {
          "type": "integer",
          "minimum": 10,
          "maximum": 100,
          "description": "Runtime updates per second."
        },
        "updateable": {
          "type": "boolean",
          "description": "Allow firmware updates."
        },
        "autosave": {
          "oneOf": [
            {
              "type": "boolean"
            },
            {
              "type": "integer",
              "minimum": 1000
            }
          ],
          "description": "Event-state autosave. true uses the build default; false disables; a number sets milliseconds (minimum 1000)."
        },
        "debug": {
          "oneOf": [
            {
              "type": "boolean"
            },
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 5,
              "description": "ESP log level: 0 none, 1 error, 2 warn, 3 info, 4 debug, 5 verbose."
            }
          ],
          "description": "Global console log level or boolean shortcut."
        },
        "wifi": {
          "type": "boolean",
          "description": "Enable or disable Wi-Fi."
        },
        "websocket": {
          "type": "boolean",
          "description": "Enable or disable the WebSocket service."
        },
        "btn": {
          "type": "integer",
          "enum": [
            -1,
            0,
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8,
            9,
            10,
            11,
            12,
            13,
            14,
            15,
            16,
            17,
            18,
            19,
            20,
            21,
            22,
            23,
            25,
            26,
            27,
            32,
            33,
            34,
            35,
            36,
            37,
            38,
            39
          ],
          "description": "GPIO for btn; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
        },
        "!btn+": {
          "type": "integer",
          "enum": [
            -1,
            0,
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8,
            9,
            10,
            11,
            12,
            13,
            14,
            15,
            16,
            17,
            18,
            19,
            20,
            21,
            22,
            23,
            25,
            26,
            27,
            32,
            33,
            34,
            35,
            36,
            37,
            38,
            39
          ],
          "description": "Decorated btn example: inverted with internal pull-up; -1 means not connected.",
          "deprecated": false
        },
        "button": {
          "type": "integer",
          "enum": [
            -1,
            0,
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8,
            9,
            10,
            11,
            12,
            13,
            14,
            15,
            16,
            17,
            18,
            19,
            20,
            21,
            22,
            23,
            25,
            26,
            27,
            32,
            33,
            34,
            35,
            36,
            37,
            38,
            39
          ],
          "description": "GPIO for button; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down.",
          "deprecated": true
        },
        "!button+": {
          "type": "integer",
          "enum": [
            -1,
            0,
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8,
            9,
            10,
            11,
            12,
            13,
            14,
            15,
            16,
            17,
            18,
            19,
            20,
            21,
            22,
            23,
            25,
            26,
            27,
            32,
            33,
            34,
            35,
            36,
            37,
            38,
            39
          ],
          "description": "Decorated button example: inverted with internal pull-up; -1 means not connected.",
          "deprecated": true
        },
        "led": {
          "type": "integer",
          "enum": [
            -1,
            0,
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8,
            9,
            10,
            11,
            12,
            13,
            14,
            15,
            16,
            17,
            18,
            19,
            20,
            21,
            22,
            23,
            25,
            26,
            27,
            32,
            33
          ],
          "description": "GPIO for led; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
        },
        "!led+": {
          "type": "integer",
          "enum": [
            -1,
            0,
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8,
            9,
            10,
            11,
            12,
            13,
            14,
            15,
            16,
            17,
            18,
            19,
            20,
            21,
            22,
            23,
            25,
            26,
            27,
            32,
            33
          ],
          "description": "Decorated led example: inverted with internal pull-up; -1 means not connected.",
          "deprecated": false
        }
      },
      "additionalProperties": false,
      "patternProperties": {
        "^(?!!btn\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*t[!+\\-]*n[!+\\-]*$": {
          "type": "integer",
          "enum": [
            -1,
            0,
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8,
            9,
            10,
            11,
            12,
            13,
            14,
            15,
            16,
            17,
            18,
            19,
            20,
            21,
            22,
            23,
            25,
            26,
            27,
            32,
            33,
            34,
            35,
            36,
            37,
            38,
            39
          ]
        },
        "^(?!!button\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*u[!+\\-]*t[!+\\-]*t[!+\\-]*o[!+\\-]*n[!+\\-]*$": {
          "type": "integer",
          "enum": [
            -1,
            0,
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8,
            9,
            10,
            11,
            12,
            13,
            14,
            15,
            16,
            17,
            18,
            19,
            20,
            21,
            22,
            23,
            25,
            26,
            27,
            32,
            33,
            34,
            35,
            36,
            37,
            38,
            39
          ]
        },
        "^(?!!led\\+$)(?=.*[!+\\-])[!+\\-]*l[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
          "type": "integer",
          "enum": [
            -1,
            0,
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8,
            9,
            10,
            11,
            12,
            13,
            14,
            15,
            16,
            17,
            18,
            19,
            20,
            21,
            22,
            23,
            25,
            26,
            27,
            32,
            33
          ]
        }
      }
    },
    "wifi": {
      "type": "object",
      "properties": {
        "channel": {
          "type": "integer",
          "minimum": 1,
          "maximum": 13,
          "description": "Wi-Fi channel; default 1."
        }
      },
      "additionalProperties": false
    },
    "rtc": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "SYSTEM",
            "DS1307",
            "PCF8563"
          ],
          "description": "RTC implementation; default SYSTEM."
        },
        "sda": {
          "type": "integer",
          "enum": [
            -1,
            0,
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8,
            9,
            10,
            11,
            12,
            13,
            14,
            15,
            16,
            17,
            18,
            19,
            20,
            21,
            22,
            23,
            25,
            26,
            27,
            32,
            33
          ],
          "description": "Output-capable RTC I2C data GPIO; required for external RTCs. -1 means not connected."
        },
        "scl": {
          "type": "integer",
          "enum": [
            -1,
            0,
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8,
            9,
            10,
            11,
            12,
            13,
            14,
            15,
            16,
            17,
            18,
            19,
            20,
            21,
            22,
            23,
            25,
            26,
            27,
            32,
            33
          ],
          "description": "Output-capable RTC I2C clock GPIO; required for external RTCs. -1 means not connected."
        }
      },
      "additionalProperties": false
    },
    "pwm": {
      "type": "object",
      "properties": {
        "frequency": {
          "type": "integer",
          "minimum": 1,
          "description": "Global PWM frequency in hertz."
        }
      },
      "additionalProperties": false
    },
    "ports": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "tag": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_]?$",
            "description": "Legacy suffix appended to PORT. Zero or one label character keeps the converted I/O label within five characters."
          },
          "type": {
            "type": "string",
            "enum": [
              "WS2805",
              "WS2811",
              "WS2812",
              "WS2812B",
              "WS2812D",
              "WS2813",
              "WS2814",
              "WS2815",
              "SK6812",
              "GS8208",
              "APA106"
            ],
            "description": "Legacy pixel chip type."
          },
          "pin": {
            "type": "integer",
            "enum": [
              -1,
              0,
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              19,
              20,
              21,
              22,
              23,
              25,
              26,
              27,
              32,
              33,
              34,
              35,
              36,
              37,
              38,
              39
            ],
            "description": "Legacy data GPIO; -1 means not connected."
          },
          "tx": {
            "type": "integer",
            "enum": [
              -1,
              0,
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              19,
              20,
              21,
              22,
              23,
              25,
              26,
              27,
              32,
              33,
              34,
              35,
              36,
              37,
              38,
              39
            ],
            "description": "Legacy transmit/data GPIO; -1 means not connected."
          },
          "txinverted": {
            "type": "boolean"
          },
          "rx": {
            "type": "integer",
            "enum": [
              -1,
              0,
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              19,
              20,
              21,
              22,
              23,
              25,
              26,
              27,
              32,
              33,
              34,
              35,
              36,
              37,
              38,
              39
            ],
            "description": "Legacy receive GPIO; -1 means not connected."
          },
          "rxinverted": {
            "type": "boolean"
          },
          "mapping": {
            "type": "array",
            "items": {
              "type": "integer"
            }
          },
          "order": {
            "type": "string",
            "pattern": "^[RGBW]{1,4}(?:\\|[RGBW]{1,4})?$",
            "examples": [
              "GRB",
              "WRGB",
              "GRB|RB"
            ]
          },
          "variant": {
            "type": "string"
          },
          "t1": {
            "type": "integer",
            "minimum": 0
          },
          "t2": {
            "type": "integer",
            "minimum": 0
          },
          "t3": {
            "type": "integer",
            "minimum": 0
          },
          "size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 2048
          },
          "reversed": {
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "required": [
          "tag",
          "type"
        ],
        "description": "Deprecated ports[] entry converted to io + segments during parsing."
      },
      "deprecated": true,
      "description": "Deprecated legacy pixel ports; use io and segments. Scheduled for removal in firmware 0.13."
    },
    "io": {
      "oneOf": [
        {
          "type": "object",
          "propertyNames": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_]{1,5}$"
          },
          "additionalProperties": {
            "$ref": "#/definitions/ioEntry"
          },
          "description": "Preferred I/O map. Each key is the 1..5 character I/O label."
        },
        {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "type": {
                    "const": "NEOPIXEL",
                    "description": "Selects the NEOPIXEL I/O implementation."
                  },
                  "name": {
                    "type": "string",
                    "description": "Optional human-readable name."
                  },
                  "brightness": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255,
                    "description": "Per-port brightness limit, 0..255."
                  },
                  "power": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255,
                    "description": "Per-port power limit, 0..255."
                  },
                  "variant": {
                    "type": "string",
                    "enum": [
                      "WS2805",
                      "WS2811",
                      "WS2812",
                      "WS2812B",
                      "WS2812D",
                      "WS2813",
                      "WS2814",
                      "WS2815",
                      "SK6812",
                      "GS8208",
                      "APA106",
                      "TM1814"
                    ],
                    "description": "Preset chip timing and default channel order."
                  },
                  "order": {
                    "type": "string",
                    "pattern": "^[RGBW]{1,4}(?:\\|[RGBW]{1,4})?$",
                    "examples": [
                      "GRB",
                      "WRGB",
                      "GRB|RB"
                    ],
                    "description": "Pixel order. Three-channel orders contain R/G/B once; four-channel orders put W first or last. GRB|RB is the WS2805 split form."
                  },
                  "pins": {
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "enum": [
                        -1,
                        0,
                        1,
                        2,
                        3,
                        4,
                        5,
                        6,
                        7,
                        8,
                        9,
                        10,
                        11,
                        12,
                        13,
                        14,
                        15,
                        16,
                        17,
                        18,
                        19,
                        20,
                        21,
                        22,
                        23,
                        25,
                        26,
                        27,
                        32,
                        33
                      ]
                    },
                    "minItems": 1,
                    "maxItems": 4,
                    "description": "Output-capable GPIOs mapped from the rightmost order channel, maximum four; -1 means not connected."
                  },
                  "t1": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Custom first RMT timing component in nanoseconds."
                  },
                  "t2": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Custom second RMT timing component in nanoseconds."
                  },
                  "t3": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Custom third RMT timing component in nanoseconds."
                  },
                  "flags": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Reserved pixel driver flags; parsed but not currently acted on."
                  },
                  "c1": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 63,
                    "description": "TM1814 current-control channel 1."
                  },
                  "c2": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 63,
                    "description": "TM1814 current-control channel 2."
                  },
                  "c3": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 63,
                    "description": "TM1814 current-control channel 3."
                  },
                  "c4": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 63,
                    "description": "TM1814 current-control channel 4."
                  },
                  "pin": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!pin+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "en": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!en+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "w": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!w+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "white": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!white+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!tx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "sda": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!sda+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "r": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!r+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "red": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!red+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "scl": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!scl+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "g": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!g+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "green": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!green+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "b": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!b+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "blue": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!blue+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rts": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rts+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tag": {
                    "type": "string",
                    "pattern": "^(?:$|[A-Za-z0-9_].*)$",
                    "description": "Optional legacy tag. Firmware uses its first character to form the implicit IOx label."
                  },
                  "label": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9_]{1,5}$",
                    "description": "Optional full legacy label; overrides the implicit tag-derived label."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "type"
                ],
                "title": "NEOPIXEL",
                "description": "Addressable one-wire pixels. TM1814 is also accepted as a variant.",
                "patternProperties": {
                  "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  }
                }
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "const": "DOTSTAR",
                    "description": "Selects the DOTSTAR I/O implementation."
                  },
                  "name": {
                    "type": "string",
                    "description": "Optional human-readable name."
                  },
                  "brightness": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255,
                    "description": "Per-port brightness limit, 0..255."
                  },
                  "power": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255,
                    "description": "Per-port power limit, 0..255."
                  },
                  "order": {
                    "const": "RGB",
                    "description": "Only RGB is implemented in firmware 0.12.11."
                  },
                  "sda": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!sda+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "scl": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!scl+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "en": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!en+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "pin": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!pin+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "w": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!w+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "white": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!white+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!tx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "r": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!r+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "red": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!red+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "g": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!g+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "green": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!green+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "b": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!b+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "blue": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!blue+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rts": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rts+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tag": {
                    "type": "string",
                    "pattern": "^(?:$|[A-Za-z0-9_].*)$",
                    "description": "Optional legacy tag. Firmware uses its first character to form the implicit IOx label."
                  },
                  "label": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9_]{1,5}$",
                    "description": "Optional full legacy label; overrides the implicit tag-derived label."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "type"
                ],
                "title": "DOTSTAR",
                "description": "APA102/Dotstar pixels; sda is data and scl is clock.",
                "patternProperties": {
                  "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  }
                }
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "const": "TM1814",
                    "description": "Selects the TM1814 I/O implementation."
                  },
                  "name": {
                    "type": "string",
                    "description": "Optional human-readable name."
                  },
                  "brightness": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255,
                    "description": "Per-port brightness limit, 0..255."
                  },
                  "power": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255,
                    "description": "Per-port power limit, 0..255."
                  },
                  "order": {
                    "type": "string",
                    "pattern": "^[RGBW]{1,4}(?:\\|[RGBW]{1,4})?$",
                    "examples": [
                      "GRB",
                      "WRGB",
                      "GRB|RB"
                    ],
                    "description": "One-, two-, or four-channel packing order supported by TM1814."
                  },
                  "t1": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Custom first RMT timing component in nanoseconds."
                  },
                  "t2": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Custom second RMT timing component in nanoseconds."
                  },
                  "t3": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Custom third RMT timing component in nanoseconds."
                  },
                  "c1": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 63,
                    "description": "TM1814 current-control channel 1."
                  },
                  "c2": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 63,
                    "description": "TM1814 current-control channel 2."
                  },
                  "c3": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 63,
                    "description": "TM1814 current-control channel 3."
                  },
                  "c4": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 63,
                    "description": "TM1814 current-control channel 4."
                  },
                  "pin": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!pin+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "en": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!en+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "w": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!w+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "white": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!white+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!tx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "sda": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!sda+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "r": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!r+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "red": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!red+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "scl": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!scl+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "g": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!g+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "green": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!green+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "b": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!b+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "blue": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!blue+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rts": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rts+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tag": {
                    "type": "string",
                    "pattern": "^(?:$|[A-Za-z0-9_].*)$",
                    "description": "Optional legacy tag. Firmware uses its first character to form the implicit IOx label."
                  },
                  "label": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9_]{1,5}$",
                    "description": "Optional full legacy label; overrides the implicit tag-derived label."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "type"
                ],
                "title": "TM1814",
                "description": "Direct TM1814 pixel driver.",
                "patternProperties": {
                  "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  }
                }
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "const": "PWM",
                    "description": "Selects the PWM I/O implementation."
                  },
                  "name": {
                    "type": "string",
                    "description": "Optional human-readable name."
                  },
                  "brightness": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255,
                    "description": "Per-port brightness limit, 0..255."
                  },
                  "power": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255,
                    "description": "Per-port power limit, 0..255."
                  },
                  "fadetime": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "PWM transition time in milliseconds; default 700."
                  },
                  "pin": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!pin+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "en": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!en+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "w": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!w+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "white": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!white+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!tx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "sda": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!sda+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "r": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!r+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "red": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!red+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "scl": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!scl+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "g": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!g+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "green": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!green+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "b": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!b+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "blue": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!blue+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rts": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rts+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tag": {
                    "type": "string",
                    "pattern": "^(?:$|[A-Za-z0-9_].*)$",
                    "description": "Optional legacy tag. Firmware uses its first character to form the implicit IOx label."
                  },
                  "label": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9_]{1,5}$",
                    "description": "Optional full legacy label; overrides the implicit tag-derived label."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "type"
                ],
                "title": "PWM",
                "description": "PWM output port.",
                "patternProperties": {
                  "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  }
                }
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "const": "DALI",
                    "description": "Selects the DALI I/O implementation."
                  },
                  "name": {
                    "type": "string",
                    "description": "Optional human-readable name."
                  },
                  "brightness": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255,
                    "description": "Per-port brightness limit, 0..255."
                  },
                  "power": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255,
                    "description": "Per-port power limit, 0..255."
                  },
                  "variant": {
                    "type": "string",
                    "enum": [
                      "DT6",
                      "DT8_XY",
                      "DT8_RGBWAF",
                      "DT8_TC",
                      "MONITOR",
                      "COMMISSION",
                      "DECOMMISSION"
                    ],
                    "description": "DALI device type or one-shot operational mode."
                  },
                  "mincolortemp": {
                    "type": "integer",
                    "minimum": 1000,
                    "maximum": 10000,
                    "description": "Minimum DT8 color temperature in kelvin."
                  },
                  "maxcolortemp": {
                    "type": "integer",
                    "minimum": 1000,
                    "maximum": 10000,
                    "description": "Maximum DT8 color temperature in kelvin; must not be below mincolortemp."
                  },
                  "mapping": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    },
                    "description": "DALI channel mapping. A negative value repeats the preceding mapping entry abs(value) times."
                  },
                  "poweronlevel": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 254,
                    "description": "DALI power-on level."
                  },
                  "systemfailurelevel": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 254,
                    "description": "DALI system-failure level."
                  },
                  "minlevel": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 254,
                    "description": "DALI minimum level."
                  },
                  "maxlevel": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 254,
                    "description": "DALI maximum level."
                  },
                  "faderate": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Requested fade rate in steps per second; firmware maps it to a DALI index."
                  },
                  "fadetime": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Requested fade time in milliseconds; firmware maps it to a DALI index."
                  },
                  "tx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!tx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "en": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!en+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "pin": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!pin+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "w": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!w+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "white": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!white+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "sda": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!sda+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "r": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!r+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "red": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!red+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "scl": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!scl+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "g": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!g+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "green": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!green+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "b": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!b+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "blue": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!blue+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rts": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rts+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tag": {
                    "type": "string",
                    "pattern": "^(?:$|[A-Za-z0-9_].*)$",
                    "description": "Optional legacy tag. Firmware uses its first character to form the implicit IOx label."
                  },
                  "label": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9_]{1,5}$",
                    "description": "Optional full legacy label; overrides the implicit tag-derived label."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "type"
                ],
                "title": "DALI",
                "description": "DALI port or operational monitor/commissioning mode. An omitted variant creates the normal DALIPort; DT6_ONOFF is recognized in source but not implemented and is rejected.",
                "patternProperties": {
                  "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  }
                }
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "const": "DAC",
                    "description": "Selects the DAC I/O implementation."
                  },
                  "name": {
                    "type": "string",
                    "description": "Optional human-readable name."
                  },
                  "brightness": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255,
                    "description": "Per-port brightness limit, 0..255."
                  },
                  "power": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255,
                    "description": "Per-port power limit, 0..255."
                  },
                  "order": {
                    "type": "string",
                    "enum": [
                      "W",
                      "RB"
                    ],
                    "description": "Implemented DAC modes. R, G and B branches are placeholders and are not available."
                  },
                  "pin": {
                    "type": "integer",
                    "enum": [
                      -1,
                      25,
                      26
                    ],
                    "description": "Single DAC-capable GPIO (25 or 26) for W mode; -1 means not connected."
                  },
                  "pins": {
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "enum": [
                        -1,
                        25,
                        26
                      ]
                    },
                    "minItems": 1,
                    "maxItems": 2,
                    "not": {
                      "enum": [
                        [
                          25,
                          25
                        ],
                        [
                          26,
                          26
                        ]
                      ]
                    },
                    "description": "DAC-capable GPIOs (25/26): exactly one for W or exactly two for RB; -1 means not connected and may repeat."
                  },
                  "tag": {
                    "type": "string",
                    "pattern": "^(?:$|[A-Za-z0-9_].*)$",
                    "description": "Optional legacy tag. Firmware uses its first character to form the implicit IOx label."
                  },
                  "label": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9_]{1,5}$",
                    "description": "Optional full legacy label; overrides the implicit tag-derived label."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "type"
                ],
                "title": "DAC",
                "description": "ESP32 DAC output; only W and RB orders are implemented. W requires one pin value; RB (also the default order) requires two values. Each value may be -1 for not connected; connected GPIO 25/26 values must be unique. Decorated/shared GPIO aliases do not configure the DAC driver.",
                "allOf": [
                  {
                    "oneOf": [
                      {
                        "properties": {
                          "order": {
                            "const": "W"
                          },
                          "pins": {
                            "type": "array",
                            "minItems": 1,
                            "maxItems": 1
                          }
                        },
                        "required": [
                          "order"
                        ],
                        "oneOf": [
                          {
                            "required": [
                              "pin"
                            ],
                            "not": {
                              "required": [
                                "pins"
                              ]
                            }
                          },
                          {
                            "required": [
                              "pins"
                            ],
                            "not": {
                              "required": [
                                "pin"
                              ]
                            }
                          }
                        ]
                      },
                      {
                        "properties": {
                          "order": {
                            "const": "RB"
                          },
                          "pins": {
                            "type": "array",
                            "minItems": 2,
                            "maxItems": 2
                          }
                        },
                        "required": [
                          "pins"
                        ],
                        "not": {
                          "required": [
                            "pin"
                          ]
                        }
                      }
                    ]
                  }
                ]
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "const": "ADC",
                    "description": "Selects the ADC I/O implementation."
                  },
                  "name": {
                    "type": "string",
                    "description": "Optional human-readable name."
                  },
                  "pin": {
                    "type": "integer",
                    "enum": [
                      -1,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!pin+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "w": {
                    "type": "integer",
                    "enum": [
                      -1,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!w+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "white": {
                    "type": "integer",
                    "enum": [
                      -1,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!white+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "en": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!en+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tag": {
                    "type": "string",
                    "pattern": "^(?:$|[A-Za-z0-9_].*)$",
                    "description": "Optional legacy tag. Firmware uses its first character to form the implicit IOx label."
                  },
                  "label": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9_]{1,5}$",
                    "description": "Optional full legacy label; overrides the implicit tag-derived label."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "type"
                ],
                "title": "ADC",
                "description": "ESP32 ADC1 analog input. The input pin may be -1 for not connected or GPIO 32..39.",
                "patternProperties": {
                  "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  }
                }
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "const": "RELAY",
                    "description": "Selects the RELAY I/O implementation."
                  },
                  "name": {
                    "type": "string",
                    "description": "Optional human-readable name."
                  },
                  "brightness": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255,
                    "description": "Per-port brightness limit, 0..255."
                  },
                  "power": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255,
                    "description": "Per-port power limit, 0..255."
                  },
                  "debounce": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Relay debounce in milliseconds; default 100."
                  },
                  "startup": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Startup delay in milliseconds; default 0."
                  },
                  "pin": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!pin+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "en": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!en+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "w": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!w+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "white": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!white+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!tx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "sda": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!sda+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "r": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!r+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "red": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!red+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "scl": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!scl+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "g": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!g+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "green": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!green+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "b": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!b+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "blue": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!blue+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rts": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rts+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tag": {
                    "type": "string",
                    "pattern": "^(?:$|[A-Za-z0-9_].*)$",
                    "description": "Optional legacy tag. Firmware uses its first character to form the implicit IOx label."
                  },
                  "label": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9_]{1,5}$",
                    "description": "Optional full legacy label; overrides the implicit tag-derived label."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "type"
                ],
                "title": "RELAY",
                "description": "Relay output port.",
                "patternProperties": {
                  "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  }
                }
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "const": "GPIO",
                    "description": "Selects the GPIO I/O implementation."
                  },
                  "name": {
                    "type": "string",
                    "description": "Optional human-readable name."
                  },
                  "variant": {
                    "type": "string",
                    "enum": [
                      "INPUT_OUTPUT",
                      "INPUT",
                      "OUTPUT",
                      "OPEN_DRAIN",
                      "RELAY",
                      "BUTTON",
                      "SWITCH"
                    ],
                    "description": "GPIO behavior preset."
                  },
                  "input": {
                    "type": "boolean",
                    "description": "Enable input behavior."
                  },
                  "output": {
                    "type": "boolean",
                    "description": "Enable output behavior."
                  },
                  "debounce": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Input debounce in milliseconds."
                  },
                  "opendrain": {
                    "type": "boolean",
                    "description": "Enable open-drain output."
                  },
                  "default": {
                    "oneOf": [
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "number"
                      }
                    ],
                    "description": "Initial output value."
                  },
                  "pin": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!pin+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "en": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!en+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "w": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!w+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "white": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!white+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!tx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "sda": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!sda+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "r": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!r+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "red": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!red+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "scl": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!scl+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "g": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!g+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "green": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!green+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "b": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!b+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "blue": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!blue+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rts": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rts+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tag": {
                    "type": "string",
                    "pattern": "^(?:$|[A-Za-z0-9_].*)$",
                    "description": "Optional legacy tag. Firmware uses its first character to form the implicit IOx label."
                  },
                  "label": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9_]{1,5}$",
                    "description": "Optional full legacy label; overrides the implicit tag-derived label."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "type"
                ],
                "title": "GPIO",
                "description": "General-purpose bidirectional GPIO.",
                "patternProperties": {
                  "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  }
                }
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "const": "GPI",
                    "description": "Selects the GPI I/O implementation."
                  },
                  "name": {
                    "type": "string",
                    "description": "Optional human-readable name."
                  },
                  "variant": {
                    "type": "string",
                    "enum": [
                      "INPUT",
                      "BUTTON",
                      "SWITCH"
                    ],
                    "description": "Input behavior preset."
                  },
                  "debounce": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Input debounce in milliseconds."
                  },
                  "pin": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!pin+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "en": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!en+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "w": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!w+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "white": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!white+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!tx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "sda": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!sda+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "r": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!r+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "red": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!red+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "scl": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!scl+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "g": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!g+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "green": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!green+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "b": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!b+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "blue": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!blue+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rts": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rts+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tag": {
                    "type": "string",
                    "pattern": "^(?:$|[A-Za-z0-9_].*)$",
                    "description": "Optional legacy tag. Firmware uses its first character to form the implicit IOx label."
                  },
                  "label": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9_]{1,5}$",
                    "description": "Optional full legacy label; overrides the implicit tag-derived label."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "type"
                ],
                "title": "GPI",
                "description": "General-purpose input.",
                "patternProperties": {
                  "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  }
                }
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "const": "GPO",
                    "description": "Selects the GPO I/O implementation."
                  },
                  "name": {
                    "type": "string",
                    "description": "Optional human-readable name."
                  },
                  "brightness": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255,
                    "description": "Per-port brightness limit, 0..255."
                  },
                  "power": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255,
                    "description": "Per-port power limit, 0..255."
                  },
                  "variant": {
                    "type": "string",
                    "enum": [
                      "OUTPUT",
                      "OPEN_DRAIN",
                      "RELAY",
                      "PWM"
                    ],
                    "description": "Output behavior. RELAY and PWM are deprecated compatibility forms."
                  },
                  "debounce": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Relay debounce in milliseconds."
                  },
                  "opendrain": {
                    "type": "boolean",
                    "description": "Enable open-drain output."
                  },
                  "default": {
                    "oneOf": [
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "number"
                      }
                    ],
                    "description": "Initial output value."
                  },
                  "fadetime": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "PWM fade time when variant is PWM."
                  },
                  "startup": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Relay startup delay when variant is RELAY."
                  },
                  "pin": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!pin+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "en": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!en+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "w": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!w+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "white": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!white+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!tx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "sda": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!sda+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "r": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!r+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "red": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!red+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "scl": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!scl+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "g": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!g+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "green": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!green+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "b": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!b+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "blue": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!blue+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rts": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rts+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tag": {
                    "type": "string",
                    "pattern": "^(?:$|[A-Za-z0-9_].*)$",
                    "description": "Optional legacy tag. Firmware uses its first character to form the implicit IOx label."
                  },
                  "label": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9_]{1,5}$",
                    "description": "Optional full legacy label; overrides the implicit tag-derived label."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "type"
                ],
                "title": "GPO",
                "description": "General-purpose output. Prefer PWM or RELAY types over their legacy GPO variants.",
                "patternProperties": {
                  "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  }
                }
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "const": "ACDET",
                    "description": "Selects the ACDET I/O implementation."
                  },
                  "name": {
                    "type": "string",
                    "description": "Optional human-readable name."
                  },
                  "pin": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!pin+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "en": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!en+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "w": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!w+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "white": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!white+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!tx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "sda": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!sda+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "r": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!r+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "red": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!red+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "scl": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!scl+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "g": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!g+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "green": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!green+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "b": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!b+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "blue": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!blue+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rts": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rts+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tag": {
                    "type": "string",
                    "pattern": "^(?:$|[A-Za-z0-9_].*)$",
                    "description": "Optional legacy tag. Firmware uses its first character to form the implicit IOx label."
                  },
                  "label": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9_]{1,5}$",
                    "description": "Optional full legacy label; overrides the implicit tag-derived label."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "type"
                ],
                "title": "ACDET",
                "description": "AC detector input.",
                "patternProperties": {
                  "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  }
                }
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "const": "HIGH",
                    "description": "Selects the HIGH I/O implementation."
                  },
                  "name": {
                    "type": "string",
                    "description": "Optional human-readable name."
                  },
                  "pin": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!pin+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "en": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!en+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "w": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!w+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "white": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!white+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!tx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "sda": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!sda+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "r": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!r+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "red": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!red+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "scl": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!scl+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "g": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!g+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "green": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!green+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "b": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!b+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "blue": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!blue+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rts": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rts+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tag": {
                    "type": "string",
                    "pattern": "^(?:$|[A-Za-z0-9_].*)$",
                    "description": "Optional legacy tag. Firmware uses its first character to form the implicit IOx label."
                  },
                  "label": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9_]{1,5}$",
                    "description": "Optional full legacy label; overrides the implicit tag-derived label."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "type"
                ],
                "title": "HIGH",
                "description": "Constant-high digital source.",
                "patternProperties": {
                  "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  }
                }
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "const": "LOW",
                    "description": "Selects the LOW I/O implementation."
                  },
                  "name": {
                    "type": "string",
                    "description": "Optional human-readable name."
                  },
                  "pin": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!pin+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "en": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!en+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "w": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!w+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "white": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!white+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!tx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "sda": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!sda+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "r": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!r+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "red": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!red+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "scl": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!scl+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "g": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!g+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "green": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!green+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "b": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!b+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "blue": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!blue+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rts": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rts+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tag": {
                    "type": "string",
                    "pattern": "^(?:$|[A-Za-z0-9_].*)$",
                    "description": "Optional legacy tag. Firmware uses its first character to form the implicit IOx label."
                  },
                  "label": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9_]{1,5}$",
                    "description": "Optional full legacy label; overrides the implicit tag-derived label."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "type"
                ],
                "title": "LOW",
                "description": "Constant-low digital source.",
                "patternProperties": {
                  "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  }
                }
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "const": "TOUCH",
                    "description": "Selects the TOUCH I/O implementation."
                  },
                  "name": {
                    "type": "string",
                    "description": "Optional human-readable name."
                  },
                  "tap": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Tap threshold; default 50."
                  },
                  "press": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Press threshold; default 500."
                  },
                  "knock": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Knock count; default 3."
                  },
                  "sensitivity": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 4,
                    "description": "Touch sensitivity level, 1..4; default 1."
                  },
                  "pin": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!pin+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "en": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!en+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "w": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!w+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "white": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!white+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!tx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "sda": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!sda+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "r": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!r+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "red": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!red+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "scl": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!scl+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "g": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!g+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "green": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!green+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "b": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!b+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "blue": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!blue+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rts": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rts+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tag": {
                    "type": "string",
                    "pattern": "^(?:$|[A-Za-z0-9_].*)$",
                    "description": "Optional legacy tag. Firmware uses its first character to form the implicit IOx label."
                  },
                  "label": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9_]{1,5}$",
                    "description": "Optional full legacy label; overrides the implicit tag-derived label."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "type"
                ],
                "title": "TOUCH",
                "description": "ESP32 capacitive-touch input; compiled in for 0.12.11.",
                "patternProperties": {
                  "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  }
                }
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "const": "UART",
                    "description": "Selects the UART I/O implementation."
                  },
                  "name": {
                    "type": "string",
                    "description": "Optional human-readable name."
                  },
                  "baudrate": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 5000000,
                    "description": "UART baud rate; default 115200."
                  },
                  "txbuffer": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 65535,
                    "description": "TX buffer size. Omit for the zero-sized default."
                  },
                  "rxbuffer": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 65535,
                    "description": "RX buffer size; default 4096."
                  },
                  "rxthreshold": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 65535,
                    "description": "RX notification threshold; default 48."
                  },
                  "tx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!tx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rts": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rts+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "en": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!en+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "pin": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!pin+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "w": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!w+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "white": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!white+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "sda": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!sda+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "r": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!r+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "red": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!red+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "scl": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!scl+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "g": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!g+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "green": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!green+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "b": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!b+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "blue": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!blue+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tag": {
                    "type": "string",
                    "pattern": "^(?:$|[A-Za-z0-9_].*)$",
                    "description": "Optional legacy tag. Firmware uses its first character to form the implicit IOx label."
                  },
                  "label": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9_]{1,5}$",
                    "description": "Optional full legacy label; overrides the implicit tag-derived label."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "type"
                ],
                "title": "UART",
                "description": "Berry-visible UART.",
                "patternProperties": {
                  "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  }
                }
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "const": "I2C",
                    "description": "Selects the I2C I/O implementation."
                  },
                  "name": {
                    "type": "string",
                    "description": "Optional human-readable name."
                  },
                  "frequency": {
                    "type": "integer",
                    "minimum": 1,
                    "description": "I2C bus frequency in hertz; default 400000."
                  },
                  "sda": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!sda+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "scl": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!scl+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "en": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!en+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "pin": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!pin+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "w": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!w+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "white": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!white+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!tx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "r": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!r+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "red": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!red+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "g": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!g+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "green": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!green+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "b": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!b+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "blue": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!blue+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rts": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rts+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tag": {
                    "type": "string",
                    "pattern": "^(?:$|[A-Za-z0-9_].*)$",
                    "description": "Optional legacy tag. Firmware uses its first character to form the implicit IOx label."
                  },
                  "label": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9_]{1,5}$",
                    "description": "Optional full legacy label; overrides the implicit tag-derived label."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "type"
                ],
                "title": "I2C",
                "description": "Berry-visible I2C bus. Only one I2C entry is supported.",
                "patternProperties": {
                  "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  }
                }
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "const": "SACN",
                    "description": "Selects the SACN I/O implementation."
                  },
                  "name": {
                    "type": "string",
                    "description": "Optional human-readable name."
                  },
                  "order": {
                    "type": "string",
                    "pattern": "^[RGBW]{1,4}(?:\\|[RGBW]{1,4})?$",
                    "examples": [
                      "GRB",
                      "WRGB",
                      "GRB|RB"
                    ],
                    "description": "Channel order used to map received data to pixels."
                  },
                  "count": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 4096,
                    "description": "Number of logical pixels/channels."
                  },
                  "port": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 65535,
                    "description": "UDP port."
                  },
                  "universe": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 64000,
                    "description": "Starting sACN universe; default 1."
                  },
                  "channel": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 512,
                    "description": "Starting DMX channel."
                  },
                  "pin": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!pin+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "w": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!w+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "white": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!white+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!tx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "sda": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!sda+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "r": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!r+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "red": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!red+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "scl": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!scl+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "g": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!g+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "green": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!green+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "b": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!b+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "blue": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!blue+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rts": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rts+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "en": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!en+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tag": {
                    "type": "string",
                    "pattern": "^(?:$|[A-Za-z0-9_].*)$",
                    "description": "Optional legacy tag. Firmware uses its first character to form the implicit IOx label."
                  },
                  "label": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9_]{1,5}$",
                    "description": "Optional full legacy label; overrides the implicit tag-derived label."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "type"
                ],
                "title": "SACN",
                "description": "Streaming ACN input/output.",
                "patternProperties": {
                  "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  }
                }
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "const": "ARTNET",
                    "description": "Selects the ARTNET I/O implementation."
                  },
                  "name": {
                    "type": "string",
                    "description": "Optional human-readable name."
                  },
                  "order": {
                    "type": "string",
                    "pattern": "^[RGBW]{1,4}(?:\\|[RGBW]{1,4})?$",
                    "examples": [
                      "GRB",
                      "WRGB",
                      "GRB|RB"
                    ],
                    "description": "Channel order used to map received data to pixels."
                  },
                  "count": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 4096,
                    "description": "Number of logical pixels/channels."
                  },
                  "port": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 65535,
                    "description": "UDP port."
                  },
                  "universe": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 64000,
                    "description": "Starting Art-Net universe; default 0."
                  },
                  "channel": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 512,
                    "description": "Starting DMX channel."
                  },
                  "pin": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!pin+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "w": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!w+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "white": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!white+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!tx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "sda": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!sda+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "r": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!r+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "red": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!red+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "scl": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!scl+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "g": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!g+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "green": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!green+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "b": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!b+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "blue": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!blue+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rts": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rts+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "en": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!en+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tag": {
                    "type": "string",
                    "pattern": "^(?:$|[A-Za-z0-9_].*)$",
                    "description": "Optional legacy tag. Firmware uses its first character to form the implicit IOx label."
                  },
                  "label": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9_]{1,5}$",
                    "description": "Optional full legacy label; overrides the implicit tag-derived label."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "type"
                ],
                "title": "ARTNET",
                "description": "Art-Net input/output.",
                "patternProperties": {
                  "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  }
                }
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "const": "DMX512",
                    "description": "Selects the DMX512 I/O implementation."
                  },
                  "name": {
                    "type": "string",
                    "description": "Optional human-readable name."
                  },
                  "order": {
                    "type": "string",
                    "pattern": "^[RGBW]{1,4}(?:\\|[RGBW]{1,4})?$",
                    "examples": [
                      "GRB",
                      "WRGB",
                      "GRB|RB"
                    ],
                    "description": "Pixel/channel order."
                  },
                  "count": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 170,
                    "description": "Logical pixel count. The code default is 512 while explicit values are capped at 170; set this explicitly."
                  },
                  "channel": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 512,
                    "description": "Starting DMX channel; default 1."
                  },
                  "tx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!tx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rts": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rts+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "en": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!en+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "pin": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!pin+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "w": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!w+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "white": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!white+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "sda": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!sda+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "r": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!r+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "red": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!red+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "scl": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!scl+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "g": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!g+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "green": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!green+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "b": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!b+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "blue": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!blue+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tag": {
                    "type": "string",
                    "pattern": "^(?:$|[A-Za-z0-9_].*)$",
                    "description": "Optional legacy tag. Firmware uses its first character to form the implicit IOx label."
                  },
                  "label": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9_]{1,5}$",
                    "description": "Optional full legacy label; overrides the implicit tag-derived label."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "type"
                ],
                "title": "DMX512",
                "description": "DMX512 interface; compiled in for 0.12.11.",
                "patternProperties": {
                  "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  }
                }
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "const": "OSC",
                    "description": "Selects the OSC I/O implementation."
                  },
                  "name": {
                    "type": "string",
                    "description": "Optional human-readable name."
                  },
                  "address": {
                    "type": "string",
                    "description": "OSC address prefix."
                  },
                  "endpoint": {
                    "type": "string",
                    "pattern": "^[^:]+:[0-9]+$",
                    "description": "Destination endpoint in host:port form."
                  },
                  "port": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 65535,
                    "description": "Listening UDP port; default 8000."
                  },
                  "rxbuffer": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 65535,
                    "description": "RX buffer size; default 1024."
                  },
                  "txbuffer": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 65535,
                    "description": "TX buffer size; default 256."
                  },
                  "pin": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!pin+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "w": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!w+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "white": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!white+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!tx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "sda": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!sda+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "r": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!r+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "red": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!red+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "scl": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!scl+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "g": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!g+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "green": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!green+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "b": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!b+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "blue": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!blue+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rts": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rts+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "en": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!en+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tag": {
                    "type": "string",
                    "pattern": "^(?:$|[A-Za-z0-9_].*)$",
                    "description": "Optional legacy tag. Firmware uses its first character to form the implicit IOx label."
                  },
                  "label": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9_]{1,5}$",
                    "description": "Optional full legacy label; overrides the implicit tag-derived label."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "type"
                ],
                "title": "OSC",
                "description": "Open Sound Control interface; compiled in for 0.12.11.",
                "patternProperties": {
                  "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  }
                }
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "const": "DUMMY",
                    "description": "Selects the DUMMY I/O implementation."
                  },
                  "name": {
                    "type": "string",
                    "description": "Optional human-readable name."
                  },
                  "brightness": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255,
                    "description": "Per-port brightness limit, 0..255."
                  },
                  "power": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255,
                    "description": "Per-port power limit, 0..255."
                  },
                  "pin": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!pin+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "w": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!w+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "white": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!white+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!tx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "sda": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!sda+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "r": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!r+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "red": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!red+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "scl": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!scl+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "g": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!g+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "green": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!green+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "b": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!b+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "blue": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!blue+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rts": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rts+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "en": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!en+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tag": {
                    "type": "string",
                    "pattern": "^(?:$|[A-Za-z0-9_].*)$",
                    "description": "Optional legacy tag. Firmware uses its first character to form the implicit IOx label."
                  },
                  "label": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9_]{1,5}$",
                    "description": "Optional full legacy label; overrides the implicit tag-derived label."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "type"
                ],
                "title": "DUMMY",
                "description": "Virtual port compatibility name.",
                "patternProperties": {
                  "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  }
                }
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "const": "VIRTUAL",
                    "description": "Selects the VIRTUAL I/O implementation."
                  },
                  "name": {
                    "type": "string",
                    "description": "Optional human-readable name."
                  },
                  "brightness": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255,
                    "description": "Per-port brightness limit, 0..255."
                  },
                  "power": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255,
                    "description": "Per-port power limit, 0..255."
                  },
                  "pin": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!pin+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "w": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!w+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "white": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!white+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!tx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "sda": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!sda+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "r": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!r+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "red": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!red+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rx": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rx+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "scl": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!scl+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "g": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!g+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "green": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!green+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "b": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!b+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "blue": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!blue+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "rts": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!rts+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "en": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!en+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "tag": {
                    "type": "string",
                    "pattern": "^(?:$|[A-Za-z0-9_].*)$",
                    "description": "Optional legacy tag. Firmware uses its first character to form the implicit IOx label."
                  },
                  "label": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9_]{1,5}$",
                    "description": "Optional full legacy label; overrides the implicit tag-derived label."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "type"
                ],
                "title": "VIRTUAL",
                "description": "Virtual in-memory port.",
                "patternProperties": {
                  "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  }
                }
              }
            ]
          },
          "description": "Deprecated array form. tag and label are optional; without either, firmware assigns IO0, IO1 and so on. Use the labeled object map instead."
        }
      ]
    },
    "segments": {
      "type": "object",
      "propertyNames": {
        "type": "string",
        "pattern": "^[A-Za-z0-9_]{1,5}$"
      },
      "additionalProperties": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255,
                "description": "Device/segment ID."
              },
              "io": {
                "type": "string",
                "pattern": "^[A-Za-z0-9_]{1,5}$",
                "description": "Referenced I/O label."
              },
              "size": {
                "type": "integer",
                "minimum": 1,
                "maximum": 2048,
                "description": "Shortcut for pixels 1..size."
              },
              "from": {
                "type": "integer",
                "minimum": 1,
                "maximum": 2048,
                "description": "First pixel, inclusive."
              },
              "to": {
                "type": "integer",
                "minimum": 1,
                "maximum": 2048,
                "description": "Last pixel, inclusive."
              },
              "step": {
                "type": "integer",
                "minimum": 1,
                "maximum": 2048,
                "description": "Pixel stride."
              }
            },
            "additionalProperties": false
          },
          {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 255,
                  "description": "Device/segment ID."
                },
                "io": {
                  "type": "string",
                  "pattern": "^[A-Za-z0-9_]{1,5}$",
                  "description": "Referenced I/O label."
                },
                "size": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 2048,
                  "description": "Shortcut for pixels 1..size."
                },
                "from": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 2048,
                  "description": "First pixel, inclusive."
                },
                "to": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 2048,
                  "description": "Last pixel, inclusive."
                },
                "step": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 2048,
                  "description": "Pixel stride."
                }
              },
              "additionalProperties": false
            },
            "minItems": 1
          }
        ]
      }
    },
    "script": {
      "type": "string",
      "description": "Single default TNGL/Berry script."
    },
    "scripts": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Ordered default TNGL/Berry scripts."
    },
    "plugins": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "object",
                "properties": {
                  "type": {
                    "const": "PowerManage"
                  },
                  "holdtime": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 65535,
                    "description": "Shutdown button hold time in milliseconds; default 500."
                  },
                  "alive": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Deprecated alive/output GPIO; use decorated en. -1 means not connected.",
                    "deprecated": true
                  },
                  "en": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!en+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ],
                    "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "btn": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for btn; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
                  },
                  "!btn+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated btn example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": false
                  },
                  "button": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for button; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down.",
                    "deprecated": true
                  },
                  "!button+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated button example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": true
                  },
                  "pin": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down.",
                    "deprecated": true
                  },
                  "!pin+": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ],
                    "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
                    "deprecated": true
                  }
                },
                "additionalProperties": false,
                "required": [
                  "type"
                ],
                "patternProperties": {
                  "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33
                    ]
                  },
                  "^(?!!btn\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*t[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!button\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*u[!+\\-]*t[!+\\-]*t[!+\\-]*o[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  },
                  "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7,
                      8,
                      9,
                      10,
                      11,
                      12,
                      13,
                      14,
                      15,
                      16,
                      17,
                      18,
                      19,
                      20,
                      21,
                      22,
                      23,
                      25,
                      26,
                      27,
                      32,
                      33,
                      34,
                      35,
                      36,
                      37,
                      38,
                      39
                    ]
                  }
                }
              }
            ]
          }
        },
        {
          "type": "object",
          "additionalProperties": {
            "type": "object",
            "properties": {
              "type": {
                "const": "PowerManage"
              },
              "holdtime": {
                "type": "integer",
                "minimum": 1,
                "maximum": 65535,
                "description": "Shutdown button hold time in milliseconds; default 500."
              },
              "alive": {
                "type": "integer",
                "enum": [
                  -1,
                  0,
                  1,
                  2,
                  3,
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15,
                  16,
                  17,
                  18,
                  19,
                  20,
                  21,
                  22,
                  23,
                  25,
                  26,
                  27,
                  32,
                  33
                ],
                "description": "Deprecated alive/output GPIO; use decorated en. -1 means not connected.",
                "deprecated": true
              },
              "en": {
                "type": "integer",
                "enum": [
                  -1,
                  0,
                  1,
                  2,
                  3,
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15,
                  16,
                  17,
                  18,
                  19,
                  20,
                  21,
                  22,
                  23,
                  25,
                  26,
                  27,
                  32,
                  33
                ],
                "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
              },
              "!en+": {
                "type": "integer",
                "enum": [
                  -1,
                  0,
                  1,
                  2,
                  3,
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15,
                  16,
                  17,
                  18,
                  19,
                  20,
                  21,
                  22,
                  23,
                  25,
                  26,
                  27,
                  32,
                  33
                ],
                "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
                "deprecated": false
              },
              "btn": {
                "type": "integer",
                "enum": [
                  -1,
                  0,
                  1,
                  2,
                  3,
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15,
                  16,
                  17,
                  18,
                  19,
                  20,
                  21,
                  22,
                  23,
                  25,
                  26,
                  27,
                  32,
                  33,
                  34,
                  35,
                  36,
                  37,
                  38,
                  39
                ],
                "description": "GPIO for btn; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
              },
              "!btn+": {
                "type": "integer",
                "enum": [
                  -1,
                  0,
                  1,
                  2,
                  3,
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15,
                  16,
                  17,
                  18,
                  19,
                  20,
                  21,
                  22,
                  23,
                  25,
                  26,
                  27,
                  32,
                  33,
                  34,
                  35,
                  36,
                  37,
                  38,
                  39
                ],
                "description": "Decorated btn example: inverted with internal pull-up; -1 means not connected.",
                "deprecated": false
              },
              "button": {
                "type": "integer",
                "enum": [
                  -1,
                  0,
                  1,
                  2,
                  3,
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15,
                  16,
                  17,
                  18,
                  19,
                  20,
                  21,
                  22,
                  23,
                  25,
                  26,
                  27,
                  32,
                  33,
                  34,
                  35,
                  36,
                  37,
                  38,
                  39
                ],
                "description": "GPIO for button; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down.",
                "deprecated": true
              },
              "!button+": {
                "type": "integer",
                "enum": [
                  -1,
                  0,
                  1,
                  2,
                  3,
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15,
                  16,
                  17,
                  18,
                  19,
                  20,
                  21,
                  22,
                  23,
                  25,
                  26,
                  27,
                  32,
                  33,
                  34,
                  35,
                  36,
                  37,
                  38,
                  39
                ],
                "description": "Decorated button example: inverted with internal pull-up; -1 means not connected.",
                "deprecated": true
              },
              "pin": {
                "type": "integer",
                "enum": [
                  -1,
                  0,
                  1,
                  2,
                  3,
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15,
                  16,
                  17,
                  18,
                  19,
                  20,
                  21,
                  22,
                  23,
                  25,
                  26,
                  27,
                  32,
                  33,
                  34,
                  35,
                  36,
                  37,
                  38,
                  39
                ],
                "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down.",
                "deprecated": true
              },
              "!pin+": {
                "type": "integer",
                "enum": [
                  -1,
                  0,
                  1,
                  2,
                  3,
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15,
                  16,
                  17,
                  18,
                  19,
                  20,
                  21,
                  22,
                  23,
                  25,
                  26,
                  27,
                  32,
                  33,
                  34,
                  35,
                  36,
                  37,
                  38,
                  39
                ],
                "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
                "deprecated": true
              }
            },
            "additionalProperties": false,
            "required": [
              "type"
            ],
            "patternProperties": {
              "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
                "type": "integer",
                "enum": [
                  -1,
                  0,
                  1,
                  2,
                  3,
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15,
                  16,
                  17,
                  18,
                  19,
                  20,
                  21,
                  22,
                  23,
                  25,
                  26,
                  27,
                  32,
                  33
                ]
              },
              "^(?!!btn\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*t[!+\\-]*n[!+\\-]*$": {
                "type": "integer",
                "enum": [
                  -1,
                  0,
                  1,
                  2,
                  3,
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15,
                  16,
                  17,
                  18,
                  19,
                  20,
                  21,
                  22,
                  23,
                  25,
                  26,
                  27,
                  32,
                  33,
                  34,
                  35,
                  36,
                  37,
                  38,
                  39
                ]
              },
              "^(?!!button\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*u[!+\\-]*t[!+\\-]*t[!+\\-]*o[!+\\-]*n[!+\\-]*$": {
                "type": "integer",
                "enum": [
                  -1,
                  0,
                  1,
                  2,
                  3,
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15,
                  16,
                  17,
                  18,
                  19,
                  20,
                  21,
                  22,
                  23,
                  25,
                  26,
                  27,
                  32,
                  33,
                  34,
                  35,
                  36,
                  37,
                  38,
                  39
                ]
              },
              "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
                "type": "integer",
                "enum": [
                  -1,
                  0,
                  1,
                  2,
                  3,
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15,
                  16,
                  17,
                  18,
                  19,
                  20,
                  21,
                  22,
                  23,
                  25,
                  26,
                  27,
                  32,
                  33,
                  34,
                  35,
                  36,
                  37,
                  38,
                  39
                ]
              }
            }
          }
        }
      ],
      "description": "Array strings are Berry plugin scripts; PowerManage objects are native plugins. Object-map form is native-only."
    },
    "sensors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "const": "PowerManage"
          },
          "holdtime": {
            "type": "integer",
            "minimum": 1,
            "maximum": 65535,
            "description": "Shutdown button hold time in milliseconds; default 500."
          },
          "alive": {
            "type": "integer",
            "enum": [
              -1,
              0,
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              19,
              20,
              21,
              22,
              23,
              25,
              26,
              27,
              32,
              33
            ],
            "description": "Deprecated alive/output GPIO; use decorated en. -1 means not connected.",
            "deprecated": true
          },
          "en": {
            "type": "integer",
            "enum": [
              -1,
              0,
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              19,
              20,
              21,
              22,
              23,
              25,
              26,
              27,
              32,
              33
            ],
            "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
          },
          "!en+": {
            "type": "integer",
            "enum": [
              -1,
              0,
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              19,
              20,
              21,
              22,
              23,
              25,
              26,
              27,
              32,
              33
            ],
            "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
            "deprecated": false
          },
          "btn": {
            "type": "integer",
            "enum": [
              -1,
              0,
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              19,
              20,
              21,
              22,
              23,
              25,
              26,
              27,
              32,
              33,
              34,
              35,
              36,
              37,
              38,
              39
            ],
            "description": "GPIO for btn; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
          },
          "!btn+": {
            "type": "integer",
            "enum": [
              -1,
              0,
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              19,
              20,
              21,
              22,
              23,
              25,
              26,
              27,
              32,
              33,
              34,
              35,
              36,
              37,
              38,
              39
            ],
            "description": "Decorated btn example: inverted with internal pull-up; -1 means not connected.",
            "deprecated": false
          },
          "button": {
            "type": "integer",
            "enum": [
              -1,
              0,
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              19,
              20,
              21,
              22,
              23,
              25,
              26,
              27,
              32,
              33,
              34,
              35,
              36,
              37,
              38,
              39
            ],
            "description": "GPIO for button; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down.",
            "deprecated": true
          },
          "!button+": {
            "type": "integer",
            "enum": [
              -1,
              0,
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              19,
              20,
              21,
              22,
              23,
              25,
              26,
              27,
              32,
              33,
              34,
              35,
              36,
              37,
              38,
              39
            ],
            "description": "Decorated button example: inverted with internal pull-up; -1 means not connected.",
            "deprecated": true
          },
          "pin": {
            "type": "integer",
            "enum": [
              -1,
              0,
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              19,
              20,
              21,
              22,
              23,
              25,
              26,
              27,
              32,
              33,
              34,
              35,
              36,
              37,
              38,
              39
            ],
            "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down.",
            "deprecated": true
          },
          "!pin+": {
            "type": "integer",
            "enum": [
              -1,
              0,
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              19,
              20,
              21,
              22,
              23,
              25,
              26,
              27,
              32,
              33,
              34,
              35,
              36,
              37,
              38,
              39
            ],
            "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
            "deprecated": true
          }
        },
        "additionalProperties": false,
        "required": [
          "type"
        ],
        "patternProperties": {
          "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
            "type": "integer",
            "enum": [
              -1,
              0,
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              19,
              20,
              21,
              22,
              23,
              25,
              26,
              27,
              32,
              33
            ]
          },
          "^(?!!btn\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*t[!+\\-]*n[!+\\-]*$": {
            "type": "integer",
            "enum": [
              -1,
              0,
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              19,
              20,
              21,
              22,
              23,
              25,
              26,
              27,
              32,
              33,
              34,
              35,
              36,
              37,
              38,
              39
            ]
          },
          "^(?!!button\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*u[!+\\-]*t[!+\\-]*t[!+\\-]*o[!+\\-]*n[!+\\-]*$": {
            "type": "integer",
            "enum": [
              -1,
              0,
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              19,
              20,
              21,
              22,
              23,
              25,
              26,
              27,
              32,
              33,
              34,
              35,
              36,
              37,
              38,
              39
            ]
          },
          "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
            "type": "integer",
            "enum": [
              -1,
              0,
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              19,
              20,
              21,
              22,
              23,
              25,
              26,
              27,
              32,
              33,
              34,
              35,
              36,
              37,
              38,
              39
            ]
          }
        }
      },
      "description": "Deprecated native-plugin list; use plugins. Scheduled for removal in firmware 0.13.",
      "deprecated": true
    },
    "ble": {
      "type": "object",
      "properties": {
        "power": {
          "type": "integer",
          "minimum": -128,
          "maximum": 127,
          "description": "Requested BLE transmit power in dBm; firmware clamps to -12/-9/-6/-3/0/3/6/9."
        },
        "disable": {
          "type": "boolean"
        },
        "enable": {
          "type": "boolean"
        },
        "advertise": {
          "type": "boolean"
        },
        "timeout": {
          "type": "integer",
          "minimum": 0,
          "description": "BLE advertising timeout in milliseconds."
        }
      },
      "additionalProperties": false
    },
    "console": {
      "type": "object",
      "properties": {
        "debug": {
          "oneOf": [
            {
              "type": "boolean"
            },
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 5,
              "description": "ESP log level: 0 none, 1 error, 2 warn, 3 info, 4 debug, 5 verbose."
            }
          ]
        },
        "tx": {
          "type": "integer",
          "enum": [
            -1,
            0,
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8,
            9,
            10,
            11,
            12,
            13,
            14,
            15,
            16,
            17,
            18,
            19,
            20,
            21,
            22,
            23,
            25,
            26,
            27,
            32,
            33,
            34,
            35,
            36,
            37,
            38,
            39
          ]
        },
        "rx": {
          "type": "integer",
          "enum": [
            -1,
            0,
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8,
            9,
            10,
            11,
            12,
            13,
            14,
            15,
            16,
            17,
            18,
            19,
            20,
            21,
            22,
            23,
            25,
            26,
            27,
            32,
            33,
            34,
            35,
            36,
            37,
            38,
            39
          ]
        },
        "baudrate": {
          "type": "integer",
          "minimum": 1,
          "maximum": 5000000,
          "description": "Console UART baud rate."
        }
      },
      "additionalProperties": false
    },
    "serial": {
      "type": "object",
      "properties": {
        "baudrate": {
          "type": "integer",
          "minimum": 1,
          "maximum": 5000000,
          "description": "Spectoda serial transport baud rate."
        },
        "debug": {
          "type": "boolean"
        },
        "tx": {
          "type": "integer",
          "enum": [
            -1,
            0,
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8,
            9,
            10,
            11,
            12,
            13,
            14,
            15,
            16,
            17,
            18,
            19,
            20,
            21,
            22,
            23,
            25,
            26,
            27,
            32,
            33,
            34,
            35,
            36,
            37,
            38,
            39
          ]
        },
        "rx": {
          "type": "integer",
          "enum": [
            -1,
            0,
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8,
            9,
            10,
            11,
            12,
            13,
            14,
            15,
            16,
            17,
            18,
            19,
            20,
            21,
            22,
            23,
            25,
            26,
            27,
            32,
            33,
            34,
            35,
            36,
            37,
            38,
            39
          ]
        },
        "enable": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "espnow": {
      "type": "object",
      "properties": {
        "datarate": {
          "type": "string",
          "enum": [
            "250K",
            "500K",
            "1M",
            "2M",
            "2M_S",
            "11M",
            "11M_S",
            "48M",
            "24M",
            "12M",
            "6M",
            "54M",
            "36M",
            "18M",
            "9M"
          ],
          "description": "ESP-NOW PHY data rate."
        },
        "channel": {
          "type": "integer",
          "minimum": 1,
          "maximum": 11
        },
        "power": {
          "type": "integer",
          "minimum": -128,
          "maximum": 127
        },
        "repetitions": {
          "type": "integer",
          "minimum": 1,
          "maximum": 24
        },
        "floor": {
          "type": "integer",
          "minimum": -128,
          "maximum": 127
        },
        "treshold": {
          "type": "integer",
          "minimum": -128,
          "maximum": 127,
          "description": "Rebroadcast RSSI threshold. The firmware keyword is intentionally misspelled treshold."
        },
        "rebroadcasts": {
          "type": "integer",
          "minimum": 0,
          "maximum": 24
        },
        "disable": {
          "type": "boolean"
        },
        "enable": {
          "type": "boolean"
        },
        "isolate": {
          "type": "boolean"
        },
        "timeout": {
          "type": "integer",
          "minimum": 0
        },
        "advertise": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "ethernet": {
      "type": "object",
      "properties": {
        "variant": {
          "type": "string",
          "enum": [
            "LAN8720",
            "OLIMEXPOE2",
            "OLIMEXPOE"
          ]
        },
        "type": {
          "type": "string",
          "enum": [
            "IP101",
            "RTL8201",
            "LAN8720",
            "DP83848",
            "KSZ8041",
            "KSZ8081"
          ]
        },
        "ip": {
          "type": "string",
          "pattern": "^(?:25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])(?:\\.(?:25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])){3}$"
        },
        "gateway": {
          "type": "string",
          "pattern": "^(?:25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])(?:\\.(?:25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])){3}$"
        },
        "mask": {
          "type": "string",
          "pattern": "^(?:25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])(?:\\.(?:25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])){3}$"
        },
        "dns": {
          "type": "string",
          "pattern": "^(?:25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])(?:\\.(?:25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])){3}$"
        },
        "hostname": {
          "type": "string"
        },
        "phydet": {
          "type": "integer"
        },
        "phymdc": {
          "type": "integer"
        },
        "phymdio": {
          "type": "integer"
        },
        "phyen": {
          "type": "integer"
        },
        "phyrst": {
          "type": "integer"
        },
        "rmiipin": {
          "type": "integer"
        },
        "rmiimode": {
          "type": "integer"
        },
        "timeout": {
          "type": "integer"
        },
        "enable": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    }
  },
  "definitions": {
    "ioEntry": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "NEOPIXEL",
              "description": "Selects the NEOPIXEL I/O implementation."
            },
            "name": {
              "type": "string",
              "description": "Optional human-readable name."
            },
            "brightness": {
              "type": "integer",
              "minimum": 0,
              "maximum": 255,
              "description": "Per-port brightness limit, 0..255."
            },
            "power": {
              "type": "integer",
              "minimum": 0,
              "maximum": 255,
              "description": "Per-port power limit, 0..255."
            },
            "variant": {
              "type": "string",
              "enum": [
                "WS2805",
                "WS2811",
                "WS2812",
                "WS2812B",
                "WS2812D",
                "WS2813",
                "WS2814",
                "WS2815",
                "SK6812",
                "GS8208",
                "APA106",
                "TM1814"
              ],
              "description": "Preset chip timing and default channel order."
            },
            "order": {
              "type": "string",
              "pattern": "^[RGBW]{1,4}(?:\\|[RGBW]{1,4})?$",
              "examples": [
                "GRB",
                "WRGB",
                "GRB|RB"
              ],
              "description": "Pixel order. Three-channel orders contain R/G/B once; four-channel orders put W first or last. GRB|RB is the WS2805 split form."
            },
            "pins": {
              "type": "array",
              "items": {
                "type": "integer",
                "enum": [
                  -1,
                  0,
                  1,
                  2,
                  3,
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15,
                  16,
                  17,
                  18,
                  19,
                  20,
                  21,
                  22,
                  23,
                  25,
                  26,
                  27,
                  32,
                  33
                ]
              },
              "minItems": 1,
              "maxItems": 4,
              "description": "Output-capable GPIOs mapped from the rightmost order channel, maximum four; -1 means not connected."
            },
            "t1": {
              "type": "integer",
              "minimum": 0,
              "description": "Custom first RMT timing component in nanoseconds."
            },
            "t2": {
              "type": "integer",
              "minimum": 0,
              "description": "Custom second RMT timing component in nanoseconds."
            },
            "t3": {
              "type": "integer",
              "minimum": 0,
              "description": "Custom third RMT timing component in nanoseconds."
            },
            "flags": {
              "type": "integer",
              "minimum": 0,
              "description": "Reserved pixel driver flags; parsed but not currently acted on."
            },
            "c1": {
              "type": "integer",
              "minimum": 0,
              "maximum": 63,
              "description": "TM1814 current-control channel 1."
            },
            "c2": {
              "type": "integer",
              "minimum": 0,
              "maximum": 63,
              "description": "TM1814 current-control channel 2."
            },
            "c3": {
              "type": "integer",
              "minimum": 0,
              "maximum": 63,
              "description": "TM1814 current-control channel 3."
            },
            "c4": {
              "type": "integer",
              "minimum": 0,
              "maximum": 63,
              "description": "TM1814 current-control channel 4."
            },
            "pin": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!pin+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "en": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!en+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "w": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!w+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "white": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!white+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "tx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!tx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "sda": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!sda+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "r": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!r+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "red": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!red+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "scl": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!scl+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "g": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!g+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "green": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!green+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "b": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!b+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "blue": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!blue+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rts": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rts+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            }
          },
          "additionalProperties": false,
          "required": [
            "type"
          ],
          "title": "NEOPIXEL",
          "description": "Addressable one-wire pixels. TM1814 is also accepted as a variant.",
          "patternProperties": {
            "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "DOTSTAR",
              "description": "Selects the DOTSTAR I/O implementation."
            },
            "name": {
              "type": "string",
              "description": "Optional human-readable name."
            },
            "brightness": {
              "type": "integer",
              "minimum": 0,
              "maximum": 255,
              "description": "Per-port brightness limit, 0..255."
            },
            "power": {
              "type": "integer",
              "minimum": 0,
              "maximum": 255,
              "description": "Per-port power limit, 0..255."
            },
            "order": {
              "const": "RGB",
              "description": "Only RGB is implemented in firmware 0.12.11."
            },
            "sda": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!sda+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "scl": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!scl+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "en": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!en+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "pin": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!pin+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "w": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!w+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "white": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!white+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "tx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!tx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "r": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!r+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "red": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!red+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "g": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!g+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "green": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!green+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "b": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!b+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "blue": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!blue+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rts": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rts+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            }
          },
          "additionalProperties": false,
          "required": [
            "type"
          ],
          "title": "DOTSTAR",
          "description": "APA102/Dotstar pixels; sda is data and scl is clock.",
          "patternProperties": {
            "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "TM1814",
              "description": "Selects the TM1814 I/O implementation."
            },
            "name": {
              "type": "string",
              "description": "Optional human-readable name."
            },
            "brightness": {
              "type": "integer",
              "minimum": 0,
              "maximum": 255,
              "description": "Per-port brightness limit, 0..255."
            },
            "power": {
              "type": "integer",
              "minimum": 0,
              "maximum": 255,
              "description": "Per-port power limit, 0..255."
            },
            "order": {
              "type": "string",
              "pattern": "^[RGBW]{1,4}(?:\\|[RGBW]{1,4})?$",
              "examples": [
                "GRB",
                "WRGB",
                "GRB|RB"
              ],
              "description": "One-, two-, or four-channel packing order supported by TM1814."
            },
            "t1": {
              "type": "integer",
              "minimum": 0,
              "description": "Custom first RMT timing component in nanoseconds."
            },
            "t2": {
              "type": "integer",
              "minimum": 0,
              "description": "Custom second RMT timing component in nanoseconds."
            },
            "t3": {
              "type": "integer",
              "minimum": 0,
              "description": "Custom third RMT timing component in nanoseconds."
            },
            "c1": {
              "type": "integer",
              "minimum": 0,
              "maximum": 63,
              "description": "TM1814 current-control channel 1."
            },
            "c2": {
              "type": "integer",
              "minimum": 0,
              "maximum": 63,
              "description": "TM1814 current-control channel 2."
            },
            "c3": {
              "type": "integer",
              "minimum": 0,
              "maximum": 63,
              "description": "TM1814 current-control channel 3."
            },
            "c4": {
              "type": "integer",
              "minimum": 0,
              "maximum": 63,
              "description": "TM1814 current-control channel 4."
            },
            "pin": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!pin+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "en": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!en+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "w": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!w+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "white": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!white+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "tx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!tx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "sda": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!sda+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "r": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!r+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "red": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!red+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "scl": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!scl+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "g": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!g+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "green": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!green+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "b": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!b+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "blue": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!blue+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rts": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rts+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            }
          },
          "additionalProperties": false,
          "required": [
            "type"
          ],
          "title": "TM1814",
          "description": "Direct TM1814 pixel driver.",
          "patternProperties": {
            "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "PWM",
              "description": "Selects the PWM I/O implementation."
            },
            "name": {
              "type": "string",
              "description": "Optional human-readable name."
            },
            "brightness": {
              "type": "integer",
              "minimum": 0,
              "maximum": 255,
              "description": "Per-port brightness limit, 0..255."
            },
            "power": {
              "type": "integer",
              "minimum": 0,
              "maximum": 255,
              "description": "Per-port power limit, 0..255."
            },
            "fadetime": {
              "type": "integer",
              "minimum": 0,
              "description": "PWM transition time in milliseconds; default 700."
            },
            "pin": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!pin+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "en": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!en+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "w": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!w+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "white": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!white+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "tx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!tx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "sda": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!sda+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "r": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!r+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "red": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!red+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "scl": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!scl+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "g": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!g+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "green": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!green+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "b": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!b+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "blue": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!blue+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rts": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rts+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            }
          },
          "additionalProperties": false,
          "required": [
            "type"
          ],
          "title": "PWM",
          "description": "PWM output port.",
          "patternProperties": {
            "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "DALI",
              "description": "Selects the DALI I/O implementation."
            },
            "name": {
              "type": "string",
              "description": "Optional human-readable name."
            },
            "brightness": {
              "type": "integer",
              "minimum": 0,
              "maximum": 255,
              "description": "Per-port brightness limit, 0..255."
            },
            "power": {
              "type": "integer",
              "minimum": 0,
              "maximum": 255,
              "description": "Per-port power limit, 0..255."
            },
            "variant": {
              "type": "string",
              "enum": [
                "DT6",
                "DT8_XY",
                "DT8_RGBWAF",
                "DT8_TC",
                "MONITOR",
                "COMMISSION",
                "DECOMMISSION"
              ],
              "description": "DALI device type or one-shot operational mode."
            },
            "mincolortemp": {
              "type": "integer",
              "minimum": 1000,
              "maximum": 10000,
              "description": "Minimum DT8 color temperature in kelvin."
            },
            "maxcolortemp": {
              "type": "integer",
              "minimum": 1000,
              "maximum": 10000,
              "description": "Maximum DT8 color temperature in kelvin; must not be below mincolortemp."
            },
            "mapping": {
              "type": "array",
              "items": {
                "type": "integer"
              },
              "description": "DALI channel mapping. A negative value repeats the preceding mapping entry abs(value) times."
            },
            "poweronlevel": {
              "type": "integer",
              "minimum": 0,
              "maximum": 254,
              "description": "DALI power-on level."
            },
            "systemfailurelevel": {
              "type": "integer",
              "minimum": 0,
              "maximum": 254,
              "description": "DALI system-failure level."
            },
            "minlevel": {
              "type": "integer",
              "minimum": 0,
              "maximum": 254,
              "description": "DALI minimum level."
            },
            "maxlevel": {
              "type": "integer",
              "minimum": 0,
              "maximum": 254,
              "description": "DALI maximum level."
            },
            "faderate": {
              "type": "integer",
              "minimum": 0,
              "description": "Requested fade rate in steps per second; firmware maps it to a DALI index."
            },
            "fadetime": {
              "type": "integer",
              "minimum": 0,
              "description": "Requested fade time in milliseconds; firmware maps it to a DALI index."
            },
            "tx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!tx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "en": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!en+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "pin": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!pin+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "w": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!w+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "white": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!white+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "sda": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!sda+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "r": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!r+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "red": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!red+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "scl": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!scl+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "g": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!g+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "green": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!green+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "b": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!b+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "blue": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!blue+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rts": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rts+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            }
          },
          "additionalProperties": false,
          "required": [
            "type"
          ],
          "title": "DALI",
          "description": "DALI port or operational monitor/commissioning mode. An omitted variant creates the normal DALIPort; DT6_ONOFF is recognized in source but not implemented and is rejected.",
          "patternProperties": {
            "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "DAC",
              "description": "Selects the DAC I/O implementation."
            },
            "name": {
              "type": "string",
              "description": "Optional human-readable name."
            },
            "brightness": {
              "type": "integer",
              "minimum": 0,
              "maximum": 255,
              "description": "Per-port brightness limit, 0..255."
            },
            "power": {
              "type": "integer",
              "minimum": 0,
              "maximum": 255,
              "description": "Per-port power limit, 0..255."
            },
            "order": {
              "type": "string",
              "enum": [
                "W",
                "RB"
              ],
              "description": "Implemented DAC modes. R, G and B branches are placeholders and are not available."
            },
            "pin": {
              "type": "integer",
              "enum": [
                -1,
                25,
                26
              ],
              "description": "Single DAC-capable GPIO (25 or 26) for W mode; -1 means not connected."
            },
            "pins": {
              "type": "array",
              "items": {
                "type": "integer",
                "enum": [
                  -1,
                  25,
                  26
                ]
              },
              "minItems": 1,
              "maxItems": 2,
              "not": {
                "enum": [
                  [
                    25,
                    25
                  ],
                  [
                    26,
                    26
                  ]
                ]
              },
              "description": "DAC-capable GPIOs (25/26): exactly one for W or exactly two for RB; -1 means not connected and may repeat."
            }
          },
          "additionalProperties": false,
          "required": [
            "type"
          ],
          "title": "DAC",
          "description": "ESP32 DAC output; only W and RB orders are implemented. W requires one pin value; RB (also the default order) requires two values. Each value may be -1 for not connected; connected GPIO 25/26 values must be unique. Decorated/shared GPIO aliases do not configure the DAC driver.",
          "allOf": [
            {
              "oneOf": [
                {
                  "properties": {
                    "order": {
                      "const": "W"
                    },
                    "pins": {
                      "type": "array",
                      "minItems": 1,
                      "maxItems": 1
                    }
                  },
                  "required": [
                    "order"
                  ],
                  "oneOf": [
                    {
                      "required": [
                        "pin"
                      ],
                      "not": {
                        "required": [
                          "pins"
                        ]
                      }
                    },
                    {
                      "required": [
                        "pins"
                      ],
                      "not": {
                        "required": [
                          "pin"
                        ]
                      }
                    }
                  ]
                },
                {
                  "properties": {
                    "order": {
                      "const": "RB"
                    },
                    "pins": {
                      "type": "array",
                      "minItems": 2,
                      "maxItems": 2
                    }
                  },
                  "required": [
                    "pins"
                  ],
                  "not": {
                    "required": [
                      "pin"
                    ]
                  }
                }
              ]
            }
          ]
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "ADC",
              "description": "Selects the ADC I/O implementation."
            },
            "name": {
              "type": "string",
              "description": "Optional human-readable name."
            },
            "pin": {
              "type": "integer",
              "enum": [
                -1,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!pin+": {
              "type": "integer",
              "enum": [
                -1,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "w": {
              "type": "integer",
              "enum": [
                -1,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!w+": {
              "type": "integer",
              "enum": [
                -1,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "white": {
              "type": "integer",
              "enum": [
                -1,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!white+": {
              "type": "integer",
              "enum": [
                -1,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "en": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!en+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            }
          },
          "additionalProperties": false,
          "required": [
            "type"
          ],
          "title": "ADC",
          "description": "ESP32 ADC1 analog input. The input pin may be -1 for not connected or GPIO 32..39.",
          "patternProperties": {
            "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "RELAY",
              "description": "Selects the RELAY I/O implementation."
            },
            "name": {
              "type": "string",
              "description": "Optional human-readable name."
            },
            "brightness": {
              "type": "integer",
              "minimum": 0,
              "maximum": 255,
              "description": "Per-port brightness limit, 0..255."
            },
            "power": {
              "type": "integer",
              "minimum": 0,
              "maximum": 255,
              "description": "Per-port power limit, 0..255."
            },
            "debounce": {
              "type": "integer",
              "minimum": 0,
              "description": "Relay debounce in milliseconds; default 100."
            },
            "startup": {
              "type": "integer",
              "minimum": 0,
              "description": "Startup delay in milliseconds; default 0."
            },
            "pin": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!pin+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "en": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!en+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "w": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!w+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "white": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!white+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "tx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!tx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "sda": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!sda+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "r": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!r+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "red": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!red+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "scl": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!scl+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "g": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!g+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "green": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!green+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "b": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!b+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "blue": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!blue+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rts": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rts+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            }
          },
          "additionalProperties": false,
          "required": [
            "type"
          ],
          "title": "RELAY",
          "description": "Relay output port.",
          "patternProperties": {
            "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "GPIO",
              "description": "Selects the GPIO I/O implementation."
            },
            "name": {
              "type": "string",
              "description": "Optional human-readable name."
            },
            "variant": {
              "type": "string",
              "enum": [
                "INPUT_OUTPUT",
                "INPUT",
                "OUTPUT",
                "OPEN_DRAIN",
                "RELAY",
                "BUTTON",
                "SWITCH"
              ],
              "description": "GPIO behavior preset."
            },
            "input": {
              "type": "boolean",
              "description": "Enable input behavior."
            },
            "output": {
              "type": "boolean",
              "description": "Enable output behavior."
            },
            "debounce": {
              "type": "integer",
              "minimum": 0,
              "description": "Input debounce in milliseconds."
            },
            "opendrain": {
              "type": "boolean",
              "description": "Enable open-drain output."
            },
            "default": {
              "oneOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "number"
                }
              ],
              "description": "Initial output value."
            },
            "pin": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!pin+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "en": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!en+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "w": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!w+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "white": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!white+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "tx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!tx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "sda": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!sda+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "r": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!r+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "red": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!red+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "scl": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!scl+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "g": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!g+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "green": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!green+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "b": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!b+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "blue": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!blue+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rts": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rts+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            }
          },
          "additionalProperties": false,
          "required": [
            "type"
          ],
          "title": "GPIO",
          "description": "General-purpose bidirectional GPIO.",
          "patternProperties": {
            "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "GPI",
              "description": "Selects the GPI I/O implementation."
            },
            "name": {
              "type": "string",
              "description": "Optional human-readable name."
            },
            "variant": {
              "type": "string",
              "enum": [
                "INPUT",
                "BUTTON",
                "SWITCH"
              ],
              "description": "Input behavior preset."
            },
            "debounce": {
              "type": "integer",
              "minimum": 0,
              "description": "Input debounce in milliseconds."
            },
            "pin": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!pin+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "en": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!en+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "w": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!w+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "white": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!white+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "tx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!tx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "sda": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!sda+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "r": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!r+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "red": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!red+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "scl": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!scl+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "g": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!g+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "green": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!green+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "b": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!b+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "blue": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!blue+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rts": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rts+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            }
          },
          "additionalProperties": false,
          "required": [
            "type"
          ],
          "title": "GPI",
          "description": "General-purpose input.",
          "patternProperties": {
            "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "GPO",
              "description": "Selects the GPO I/O implementation."
            },
            "name": {
              "type": "string",
              "description": "Optional human-readable name."
            },
            "brightness": {
              "type": "integer",
              "minimum": 0,
              "maximum": 255,
              "description": "Per-port brightness limit, 0..255."
            },
            "power": {
              "type": "integer",
              "minimum": 0,
              "maximum": 255,
              "description": "Per-port power limit, 0..255."
            },
            "variant": {
              "type": "string",
              "enum": [
                "OUTPUT",
                "OPEN_DRAIN",
                "RELAY",
                "PWM"
              ],
              "description": "Output behavior. RELAY and PWM are deprecated compatibility forms."
            },
            "debounce": {
              "type": "integer",
              "minimum": 0,
              "description": "Relay debounce in milliseconds."
            },
            "opendrain": {
              "type": "boolean",
              "description": "Enable open-drain output."
            },
            "default": {
              "oneOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "number"
                }
              ],
              "description": "Initial output value."
            },
            "fadetime": {
              "type": "integer",
              "minimum": 0,
              "description": "PWM fade time when variant is PWM."
            },
            "startup": {
              "type": "integer",
              "minimum": 0,
              "description": "Relay startup delay when variant is RELAY."
            },
            "pin": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!pin+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "en": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!en+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "w": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!w+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "white": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!white+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "tx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!tx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "sda": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!sda+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "r": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!r+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "red": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!red+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "scl": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!scl+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "g": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!g+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "green": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!green+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "b": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!b+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "blue": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!blue+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rts": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rts+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            }
          },
          "additionalProperties": false,
          "required": [
            "type"
          ],
          "title": "GPO",
          "description": "General-purpose output. Prefer PWM or RELAY types over their legacy GPO variants.",
          "patternProperties": {
            "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "ACDET",
              "description": "Selects the ACDET I/O implementation."
            },
            "name": {
              "type": "string",
              "description": "Optional human-readable name."
            },
            "pin": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!pin+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "en": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!en+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "w": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!w+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "white": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!white+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "tx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!tx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "sda": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!sda+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "r": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!r+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "red": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!red+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "scl": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!scl+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "g": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!g+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "green": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!green+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "b": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!b+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "blue": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!blue+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rts": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rts+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            }
          },
          "additionalProperties": false,
          "required": [
            "type"
          ],
          "title": "ACDET",
          "description": "AC detector input.",
          "patternProperties": {
            "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "HIGH",
              "description": "Selects the HIGH I/O implementation."
            },
            "name": {
              "type": "string",
              "description": "Optional human-readable name."
            },
            "pin": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!pin+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "en": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!en+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "w": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!w+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "white": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!white+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "tx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!tx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "sda": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!sda+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "r": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!r+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "red": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!red+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "scl": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!scl+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "g": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!g+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "green": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!green+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "b": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!b+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "blue": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!blue+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rts": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rts+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            }
          },
          "additionalProperties": false,
          "required": [
            "type"
          ],
          "title": "HIGH",
          "description": "Constant-high digital source.",
          "patternProperties": {
            "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "LOW",
              "description": "Selects the LOW I/O implementation."
            },
            "name": {
              "type": "string",
              "description": "Optional human-readable name."
            },
            "pin": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!pin+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "en": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!en+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "w": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!w+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "white": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!white+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "tx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!tx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "sda": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!sda+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "r": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!r+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "red": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!red+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "scl": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!scl+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "g": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!g+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "green": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!green+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "b": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!b+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "blue": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!blue+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rts": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rts+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            }
          },
          "additionalProperties": false,
          "required": [
            "type"
          ],
          "title": "LOW",
          "description": "Constant-low digital source.",
          "patternProperties": {
            "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "TOUCH",
              "description": "Selects the TOUCH I/O implementation."
            },
            "name": {
              "type": "string",
              "description": "Optional human-readable name."
            },
            "tap": {
              "type": "integer",
              "minimum": 0,
              "description": "Tap threshold; default 50."
            },
            "press": {
              "type": "integer",
              "minimum": 0,
              "description": "Press threshold; default 500."
            },
            "knock": {
              "type": "integer",
              "minimum": 0,
              "description": "Knock count; default 3."
            },
            "sensitivity": {
              "type": "integer",
              "minimum": 1,
              "maximum": 4,
              "description": "Touch sensitivity level, 1..4; default 1."
            },
            "pin": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!pin+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "en": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!en+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "w": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!w+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "white": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!white+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "tx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!tx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "sda": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!sda+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "r": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!r+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "red": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!red+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "scl": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!scl+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "g": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!g+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "green": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!green+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "b": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!b+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "blue": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!blue+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rts": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rts+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            }
          },
          "additionalProperties": false,
          "required": [
            "type"
          ],
          "title": "TOUCH",
          "description": "ESP32 capacitive-touch input; compiled in for 0.12.11.",
          "patternProperties": {
            "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "UART",
              "description": "Selects the UART I/O implementation."
            },
            "name": {
              "type": "string",
              "description": "Optional human-readable name."
            },
            "baudrate": {
              "type": "integer",
              "minimum": 1,
              "maximum": 5000000,
              "description": "UART baud rate; default 115200."
            },
            "txbuffer": {
              "type": "integer",
              "minimum": 1,
              "maximum": 65535,
              "description": "TX buffer size. Omit for the zero-sized default."
            },
            "rxbuffer": {
              "type": "integer",
              "minimum": 1,
              "maximum": 65535,
              "description": "RX buffer size; default 4096."
            },
            "rxthreshold": {
              "type": "integer",
              "minimum": 1,
              "maximum": 65535,
              "description": "RX notification threshold; default 48."
            },
            "tx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!tx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rts": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rts+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "en": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!en+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "pin": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!pin+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "w": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!w+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "white": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!white+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "sda": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!sda+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "r": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!r+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "red": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!red+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "scl": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!scl+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "g": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!g+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "green": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!green+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "b": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!b+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "blue": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!blue+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            }
          },
          "additionalProperties": false,
          "required": [
            "type"
          ],
          "title": "UART",
          "description": "Berry-visible UART.",
          "patternProperties": {
            "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "I2C",
              "description": "Selects the I2C I/O implementation."
            },
            "name": {
              "type": "string",
              "description": "Optional human-readable name."
            },
            "frequency": {
              "type": "integer",
              "minimum": 1,
              "description": "I2C bus frequency in hertz; default 400000."
            },
            "sda": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!sda+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "scl": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!scl+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "en": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!en+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "pin": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!pin+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "w": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!w+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "white": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!white+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "tx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!tx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "r": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!r+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "red": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!red+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "g": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!g+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "green": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!green+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "b": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!b+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "blue": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!blue+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rts": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rts+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            }
          },
          "additionalProperties": false,
          "required": [
            "type"
          ],
          "title": "I2C",
          "description": "Berry-visible I2C bus. Only one I2C entry is supported.",
          "patternProperties": {
            "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "SACN",
              "description": "Selects the SACN I/O implementation."
            },
            "name": {
              "type": "string",
              "description": "Optional human-readable name."
            },
            "order": {
              "type": "string",
              "pattern": "^[RGBW]{1,4}(?:\\|[RGBW]{1,4})?$",
              "examples": [
                "GRB",
                "WRGB",
                "GRB|RB"
              ],
              "description": "Channel order used to map received data to pixels."
            },
            "count": {
              "type": "integer",
              "minimum": 1,
              "maximum": 4096,
              "description": "Number of logical pixels/channels."
            },
            "port": {
              "type": "integer",
              "minimum": 1,
              "maximum": 65535,
              "description": "UDP port."
            },
            "universe": {
              "type": "integer",
              "minimum": 1,
              "maximum": 64000,
              "description": "Starting sACN universe; default 1."
            },
            "channel": {
              "type": "integer",
              "minimum": 1,
              "maximum": 512,
              "description": "Starting DMX channel."
            },
            "pin": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!pin+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "w": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!w+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "white": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!white+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "tx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!tx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "sda": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!sda+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "r": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!r+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "red": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!red+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "scl": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!scl+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "g": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!g+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "green": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!green+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "b": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!b+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "blue": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!blue+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rts": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rts+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "en": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!en+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            }
          },
          "additionalProperties": false,
          "required": [
            "type"
          ],
          "title": "SACN",
          "description": "Streaming ACN input/output.",
          "patternProperties": {
            "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "ARTNET",
              "description": "Selects the ARTNET I/O implementation."
            },
            "name": {
              "type": "string",
              "description": "Optional human-readable name."
            },
            "order": {
              "type": "string",
              "pattern": "^[RGBW]{1,4}(?:\\|[RGBW]{1,4})?$",
              "examples": [
                "GRB",
                "WRGB",
                "GRB|RB"
              ],
              "description": "Channel order used to map received data to pixels."
            },
            "count": {
              "type": "integer",
              "minimum": 1,
              "maximum": 4096,
              "description": "Number of logical pixels/channels."
            },
            "port": {
              "type": "integer",
              "minimum": 1,
              "maximum": 65535,
              "description": "UDP port."
            },
            "universe": {
              "type": "integer",
              "minimum": 0,
              "maximum": 64000,
              "description": "Starting Art-Net universe; default 0."
            },
            "channel": {
              "type": "integer",
              "minimum": 1,
              "maximum": 512,
              "description": "Starting DMX channel."
            },
            "pin": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!pin+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "w": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!w+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "white": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!white+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "tx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!tx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "sda": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!sda+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "r": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!r+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "red": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!red+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "scl": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!scl+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "g": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!g+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "green": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!green+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "b": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!b+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "blue": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!blue+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rts": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rts+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "en": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!en+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            }
          },
          "additionalProperties": false,
          "required": [
            "type"
          ],
          "title": "ARTNET",
          "description": "Art-Net input/output.",
          "patternProperties": {
            "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "DMX512",
              "description": "Selects the DMX512 I/O implementation."
            },
            "name": {
              "type": "string",
              "description": "Optional human-readable name."
            },
            "order": {
              "type": "string",
              "pattern": "^[RGBW]{1,4}(?:\\|[RGBW]{1,4})?$",
              "examples": [
                "GRB",
                "WRGB",
                "GRB|RB"
              ],
              "description": "Pixel/channel order."
            },
            "count": {
              "type": "integer",
              "minimum": 1,
              "maximum": 170,
              "description": "Logical pixel count. The code default is 512 while explicit values are capped at 170; set this explicitly."
            },
            "channel": {
              "type": "integer",
              "minimum": 1,
              "maximum": 512,
              "description": "Starting DMX channel; default 1."
            },
            "tx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!tx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rts": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rts+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "en": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!en+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "pin": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!pin+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "w": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!w+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "white": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!white+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "sda": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!sda+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "r": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!r+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "red": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!red+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "scl": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!scl+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "g": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!g+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "green": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!green+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "b": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!b+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "blue": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!blue+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ],
              "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            }
          },
          "additionalProperties": false,
          "required": [
            "type"
          ],
          "title": "DMX512",
          "description": "DMX512 interface; compiled in for 0.12.11.",
          "patternProperties": {
            "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            },
            "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33
              ]
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "OSC",
              "description": "Selects the OSC I/O implementation."
            },
            "name": {
              "type": "string",
              "description": "Optional human-readable name."
            },
            "address": {
              "type": "string",
              "description": "OSC address prefix."
            },
            "endpoint": {
              "type": "string",
              "pattern": "^[^:]+:[0-9]+$",
              "description": "Destination endpoint in host:port form."
            },
            "port": {
              "type": "integer",
              "minimum": 1,
              "maximum": 65535,
              "description": "Listening UDP port; default 8000."
            },
            "rxbuffer": {
              "type": "integer",
              "minimum": 1,
              "maximum": 65535,
              "description": "RX buffer size; default 1024."
            },
            "txbuffer": {
              "type": "integer",
              "minimum": 1,
              "maximum": 65535,
              "description": "TX buffer size; default 256."
            },
            "pin": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!pin+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "w": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!w+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "white": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!white+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "tx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!tx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "sda": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!sda+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "r": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!r+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "red": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!red+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "scl": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!scl+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "g": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!g+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "green": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!green+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "b": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!b+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "blue": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!blue+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rts": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rts+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "en": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!en+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            }
          },
          "additionalProperties": false,
          "required": [
            "type"
          ],
          "title": "OSC",
          "description": "Open Sound Control interface; compiled in for 0.12.11.",
          "patternProperties": {
            "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "DUMMY",
              "description": "Selects the DUMMY I/O implementation."
            },
            "name": {
              "type": "string",
              "description": "Optional human-readable name."
            },
            "brightness": {
              "type": "integer",
              "minimum": 0,
              "maximum": 255,
              "description": "Per-port brightness limit, 0..255."
            },
            "power": {
              "type": "integer",
              "minimum": 0,
              "maximum": 255,
              "description": "Per-port power limit, 0..255."
            },
            "pin": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!pin+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "w": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!w+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "white": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!white+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "tx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!tx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "sda": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!sda+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "r": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!r+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "red": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!red+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "scl": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!scl+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "g": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!g+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "green": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!green+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "b": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!b+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "blue": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!blue+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rts": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rts+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "en": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!en+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            }
          },
          "additionalProperties": false,
          "required": [
            "type"
          ],
          "title": "DUMMY",
          "description": "Virtual port compatibility name.",
          "patternProperties": {
            "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "const": "VIRTUAL",
              "description": "Selects the VIRTUAL I/O implementation."
            },
            "name": {
              "type": "string",
              "description": "Optional human-readable name."
            },
            "brightness": {
              "type": "integer",
              "minimum": 0,
              "maximum": 255,
              "description": "Per-port brightness limit, 0..255."
            },
            "power": {
              "type": "integer",
              "minimum": 0,
              "maximum": 255,
              "description": "Per-port power limit, 0..255."
            },
            "pin": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for pin; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!pin+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated pin example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "w": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for w; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!w+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated w example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "white": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for white; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!white+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated white example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "tx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for tx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!tx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated tx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "sda": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for sda; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!sda+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated sda example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "r": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for r; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!r+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated r example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "red": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for red; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!red+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated red example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rx": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rx; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rx+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rx example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "scl": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for scl; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!scl+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated scl example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "g": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for g; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!g+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated g example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "green": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for green; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!green+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated green example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "b": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for b; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!b+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated b example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "blue": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for blue; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!blue+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated blue example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "rts": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for rts; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!rts+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated rts example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            },
            "en": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "GPIO for en; -1 means not connected. Decorators may occur anywhere: ! invert, + pull-up, - pull-down."
            },
            "!en+": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ],
              "description": "Decorated en example: inverted with internal pull-up; -1 means not connected.",
              "deprecated": false
            }
          },
          "additionalProperties": false,
          "required": [
            "type"
          ],
          "title": "VIRTUAL",
          "description": "Virtual in-memory port.",
          "patternProperties": {
            "^(?!!pin\\+$)(?=.*[!+\\-])[!+\\-]*p[!+\\-]*i[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!w\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!white\\+$)(?=.*[!+\\-])[!+\\-]*w[!+\\-]*h[!+\\-]*i[!+\\-]*t[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!tx\\+$)(?=.*[!+\\-])[!+\\-]*t[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!sda\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*d[!+\\-]*a[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!r\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!red\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*e[!+\\-]*d[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rx\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*x[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!scl\\+$)(?=.*[!+\\-])[!+\\-]*s[!+\\-]*c[!+\\-]*l[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!g\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!green\\+$)(?=.*[!+\\-])[!+\\-]*g[!+\\-]*r[!+\\-]*e[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!b\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!blue\\+$)(?=.*[!+\\-])[!+\\-]*b[!+\\-]*l[!+\\-]*u[!+\\-]*e[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!rts\\+$)(?=.*[!+\\-])[!+\\-]*r[!+\\-]*t[!+\\-]*s[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            },
            "^(?!!en\\+$)(?=.*[!+\\-])[!+\\-]*e[!+\\-]*n[!+\\-]*$": {
              "type": "integer",
              "enum": [
                -1,
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                25,
                26,
                27,
                32,
                33,
                34,
                35,
                36,
                37,
                38,
                39
              ]
            }
          }
        }
      ]
    }
  }
}
