Skip to main content
Glama

Record a battle action

submit_battle_action
Destructive

Appends a legal battle command only when expectedSeq matches the current log. Requires mcp:write.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
tokenYes
commandYes
expectedSeqYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / command / anyOf
      Previous value: -[
      -  {
      -    "oneOf": [
      -      {
      -        "properties": {
      -          "cardKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "select-mission",
      -            "type": "string"
      -          },
      -          "occurrence": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "selection": {
      -            "oneOf": [
      -              {
      -                "properties": {
      -                  "fallback": {
      -                    "type": "boolean"
      -                  },
      -                  "kind": {
      -                    "const": "punishment",
      -                    "type": "string"
      -                  },
      -                  "qualified": {
      -                    "type": "boolean"
      -                  },
      -                  "unavailable": {
      -                    "const": true,
      -                    "type": "boolean"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "playerId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "rosterSeq": {
      -                          "exclusiveMinimum": 0,
      -                          "maximum": 9007199254740991,
      -                          "type": "integer"
      -                        },
      -                        "unitKey": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "playerId",
      -                        "unitKey",
      -                        "rosterSeq"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "units",
      -                  "fallback",
      -                  "qualified"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "guards": {
      -                    "items": {
      -                      "properties": {
      -                        "objective": {
      -                          "properties": {
      -                            "key": {
      -                              "maxLength": 128,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "name": {
      -                              "maxLength": 80,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "key",
      -                            "name"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "unit": {
      -                          "properties": {
      -                            "playerId": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "rosterSeq": {
      -                              "exclusiveMinimum": 0,
      -                              "maximum": 9007199254740991,
      -                              "type": "integer"
      -                            },
      -                            "unitKey": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "playerId",
      -                            "unitKey",
      -                            "rosterSeq"
      -                          ],
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "objective",
      -                        "unit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "guards",
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "guards"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "kind": {
      -                    "const": "tempting-target",
      -                    "type": "string"
      -                  },
      -                  "noMansLand": {
      -                    "type": "boolean"
      -                  },
      -                  "notHome": {
      -                    "type": "boolean"
      -                  },
      -                  "objective": {
      -                    "properties": {
      -                      "key": {
      -                        "maxLength": 128,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "key",
      -                      "name"
      -                    ],
      -                    "type": "object"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "objective",
      -                  "notHome",
      -                  "noMansLand"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "kind": {
      -                    "const": "beacon",
      -                    "type": "string"
      -                  },
      -                  "note": {
      -                    "maxLength": 200,
      -                    "type": "string"
      -                  },
      -                  "unit": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "playerId": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "rosterSeq": {
      -                            "exclusiveMinimum": 0,
      -                            "maximum": 9007199254740991,
      -                            "type": "integer"
      -                          },
      -                          "unitKey": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "playerId",
      -                          "unitKey",
      -                          "rosterSeq"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "unit",
      -                  "note"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "allEligible": {
      -                    "type": "boolean"
      -                  },
      -                  "areas": {
      -                    "items": {
      -                      "properties": {
      -                        "key": {
      -                          "maxLength": 128,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 5,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "locate-and-deny",
      -                    "type": "string"
      -                  },
      -                  "outsideZone": {
      -                    "type": "boolean"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "areas",
      -                  "outsideZone",
      -                  "allEligible"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "controlled": {
      -                    "type": "boolean"
      -                  },
      -                  "kind": {
      -                    "const": "sensor-sweep",
      -                    "type": "string"
      -                  },
      -                  "marker": {
      -                    "properties": {
      -                      "key": {
      -                        "maxLength": 128,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "playerId": {
      -                        "maxLength": 64,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "key",
      -                      "name",
      -                      "playerId"
      -                    ],
      -                    "type": "object"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "marker",
      -                  "controlled"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "consecrations": {
      -                    "items": {
      -                      "properties": {
      -                        "objective": {
      -                          "properties": {
      -                            "key": {
      -                              "maxLength": 128,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "name": {
      -                              "maxLength": 80,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "key",
      -                            "name"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "unit": {
      -                          "properties": {
      -                            "playerId": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "rosterSeq": {
      -                              "exclusiveMinimum": 0,
      -                              "maximum": 9007199254740991,
      -                              "type": "integer"
      -                            },
      -                            "unitKey": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "playerId",
      -                            "unitKey",
      -                            "rosterSeq"
      -                          ],
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "objective",
      -                        "unit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "consecrate",
      -                    "type": "string"
      -                  },
      -                  "notHome": {
      -                    "type": "boolean"
      -                  },
      -                  "qualified": {
      -                    "type": "boolean"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "consecrations",
      -                  "qualified",
      -                  "notHome"
      -                ],
      -                "type": "object"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "cardKey",
      -          "occurrence",
      -          "selection"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "clockLimitMinutes": {
      -            "anyOf": [
      -              {
      -                "maximum": 300,
      -                "minimum": 5,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "kind": {
      -            "const": "configure-battle",
      -            "type": "string"
      -          },
      -          "limit": {
      -            "anyOf": [
      -              {
      -                "maximum": 10000,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "manual": {
      -            "type": "boolean"
      -          },
      -          "missionPackId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "playerCount": {
      -            "anyOf": [
      -              {
      -                "const": 2,
      -                "type": "number"
      -              },
      -              {
      -                "const": 3,
      -                "type": "number"
      -              },
      -              {
      -                "const": 4,
      -                "type": "number"
      -              }
      -            ]
      -          },
      -          "teamBattle": {
      -            "type": "boolean"
      -          },
      -          "terrainLayoutId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "twistId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "limit",
      -          "missionPackId",
      -          "terrainLayoutId",
      -          "twistId",
      -          "clockLimitMinutes"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reset-setup",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "detach-roster",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "dispositions": {
      -            "items": {
      -              "properties": {
      -                "disposition": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "side": {
      -                  "maximum": 1,
      -                  "minimum": 0,
      -                  "type": "integer"
      -                }
      -              },
      -              "required": [
      -                "side",
      -                "disposition"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 2,
      -            "type": "array"
      -          },
      -          "eventToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "lock-league-rosters",
      -            "type": "string"
      -          },
      -          "leagueToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "leagueToken"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-setup-step",
      -            "type": "string"
      -          },
      -          "step": {
      -            "maximum": 9,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "step"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-attacker",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "attackerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-first-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "disposition": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-side-disposition",
      -            "type": "string"
      -          },
      -          "side": {
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "side",
      -          "disposition"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "attach-roster",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "prep": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "primary": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "awards": {
      -                            "items": {
      -                              "properties": {
      -                                "criteria": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 2000,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "cumulative": {
      -                                  "type": "boolean"
      -                                },
      -                                "group": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 100,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "max": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maximum": 100,
      -                                      "minimum": 0,
      -                                      "type": "integer"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "mode": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 40,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "per": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 200,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "trigger": {
      -                                  "properties": {
      -                                    "phase": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "playerTurn": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMax": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMin": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "timing": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    }
      -                                  },
      -                                  "required": [
      -                                    "timing",
      -                                    "phase",
      -                                    "playerTurn",
      -                                    "roundMin",
      -                                    "roundMax"
      -                                  ],
      -                                  "type": "object"
      -                                },
      -                                "vp": {
      -                                  "maximum": 100,
      -                                  "minimum": 0,
      -                                  "type": "integer"
      -                                }
      -                              },
      -                              "required": [
      -                                "vp",
      -                                "per",
      -                                "mode",
      -                                "max",
      -                                "group",
      -                                "cumulative",
      -                                "criteria",
      -                                "trigger"
      -                              ],
      -                              "type": "object"
      -                            },
      -                            "maxItems": 20,
      -                            "type": "array"
      -                          },
      -                          "key": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "name": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "selection": {
      -                            "enum": [
      -                              "punishment",
      -                              "guards",
      -                              "tempting-target",
      -                              "beacon",
      -                              "locate-and-deny",
      -                              "sensor-sweep",
      -                              "consecrate"
      -                            ],
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "key",
      -                          "name"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "secondaries": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "selection": {
      -                          "enum": [
      -                            "punishment",
      -                            "guards",
      -                            "tempting-target",
      -                            "beacon",
      -                            "locate-and-deny",
      -                            "sensor-sweep",
      -                            "consecrate"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 6,
      -                    "type": "array"
      -                  },
      -                  "secondaryDeck": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "selection": {
      -                          "enum": [
      -                            "punishment",
      -                            "guards",
      -                            "tempting-target",
      -                            "beacon",
      -                            "locate-and-deny",
      -                            "sensor-sweep",
      -                            "consecrate"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 60,
      -                    "type": "array"
      -                  },
      -                  "secondaryMode": {
      -                    "enum": [
      -                      "tactical",
      -                      "fixed"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "stratagems": {
      -                    "items": {
      -                      "properties": {
      -                        "cp": {
      -                          "maximum": 6,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "detachment": {
      -                          "maxLength": 249,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "limit": {
      -                          "enum": [
      -                            "phase",
      -                            "turn",
      -                            "battle-round",
      -                            "battle",
      -                            "unlimited"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "phases": {
      -                          "items": {
      -                            "enum": [
      -                              "command",
      -                              "movement",
      -                              "shooting",
      -                              "charge",
      -                              "fight",
      -                              "end"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 6,
      -                          "type": "array"
      -                        },
      -                        "turn": {
      -                          "enum": [
      -                            "your-turn",
      -                            "opponent-turn",
      -                            "either"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "cp",
      -                        "limit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 48,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "stratagems",
      -                  "secondaries",
      -                  "primary",
      -                  "secondaryMode"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "roster": {
      -            "properties": {
      -              "built": {
      -                "properties": {
      -                  "catalogueId": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "detachment": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 80,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachmentIds": {
      -                    "items": {
      -                      "maxLength": 128,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "detachmentPointBudget": {
      -                    "anyOf": [
      -                      {
      -                        "maximum": 3,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachments": {
      -                    "items": {
      -                      "properties": {
      -                        "name": {
      -                          "maxLength": 80,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 3,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "name",
      -                        "points"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "disposition": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 64,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "dispositions": {
      -                    "items": {
      -                      "maxLength": 64,
      -                      "type": "string"
      -                    },
      -                    "maxItems": 16,
      -                    "type": "array"
      -                  },
      -                  "edition": {
      -                    "properties": {
      -                      "description": {
      -                        "maxLength": 240,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "id": {
      -                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "slug": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      -                        "type": "string"
      -                      },
      -                      "status": {
      -                        "enum": [
      -                          "preview",
      -                          "released",
      -                          "retired"
      -                        ],
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "id",
      -                      "name",
      -                      "status"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "limit": {
      -                    "maximum": 10000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "picks": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "catalogueId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "choices": {
      -                          "additionalProperties": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 60,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        },
      -                        "note": {
      -                          "maxLength": 500,
      -                          "type": "string"
      -                        },
      -                        "spreads": {
      -                          "additionalProperties": {
      -                            "additionalProperties": {
      -                              "maximum": 60,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            "propertyNames": {
      -                              "maxLength": 64,
      -                              "type": "string"
      -                            },
      -                            "type": "object"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "toggles": {
      -                          "additionalProperties": {
      -                            "maximum": 1,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "entryId"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 100,
      -                    "type": "array"
      -                  },
      -                  "pointsBudget": {
      -                    "maximum": 10000,
      -                    "minimum": 500,
      -                    "type": "integer"
      -                  },
      -                  "revision": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "strategicReserveLimit": {
      -                    "maximum": 5000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "enhancements": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "formationOptions": {
      -                          "items": {
      -                            "enum": [
      -                              "battlefield",
      -                              "strategic-reserves",
      -                              "deep-strike",
      -                              "embarked"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 4,
      -                          "type": "array"
      -                        },
      -                        "group": {
      -                          "enum": [
      -                            "epic-hero",
      -                            "character",
      -                            "battleline",
      -                            "infantry",
      -                            "swarm",
      -                            "mounted",
      -                            "beast",
      -                            "monster",
      -                            "vehicle",
      -                            "drone",
      -                            "transport",
      -                            "fortification",
      -                            "other"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "joined": {
      -                          "items": {
      -                            "properties": {
      -                              "label": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "label",
      -                              "name"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "keywords": {
      -                          "items": {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 60,
      -                          "type": "array"
      -                        },
      -                        "models": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "note": {
      -                          "maxLength": 500,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "maximum": 10000,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "prebattleRules": {
      -                          "items": {
      -                            "enum": [
      -                              "infiltrators",
      -                              "scouts"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 2,
      -                          "type": "array"
      -                        },
      -                        "strategicReserveExempt": {
      -                          "type": "boolean"
      -                        },
      -                        "transport": {
      -                          "type": "boolean"
      -                        },
      -                        "transportCapacity": {
      -                          "properties": {
      -                            "alternatives": {
      -                              "items": {
      -                                "maxLength": 200,
      -                                "type": "string"
      -                              },
      -                              "maxItems": 20,
      -                              "type": "array"
      -                            },
      -                            "conditions": {
      -                              "items": {
      -                                "properties": {
      -                                  "capacity": {
      -                                    "exclusiveMinimum": 0,
      -                                    "maximum": 1000,
      -                                    "type": "integer"
      -                                  },
      -                                  "carries": {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  "maxWounds": {
      -                                    "exclusiveMinimum": 0,
      -                                    "maximum": 1000,
      -                                    "type": "integer"
      -                                  },
      -                                  "wargear": {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  }
      -                                },
      -                                "required": [
      -                                  "capacity",
      -                                  "carries",
      -                                  "wargear"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "maxItems": 20,
      -                              "type": "array"
      -                            },
      -                            "excluded": {
      -                              "items": {
      -                                "properties": {
      -                                  "except": {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  "keywords": {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  }
      -                                },
      -                                "required": [
      -                                  "keywords"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "maxItems": 20,
      -                              "type": "array"
      -                            },
      -                            "instead": {
      -                              "anyOf": [
      -                                {
      -                                  "properties": {
      -                                    "capacity": {
      -                                      "exclusiveMinimum": 0,
      -                                      "maximum": 1000,
      -                                      "type": "integer"
      -                                    },
      -                                    "carries": {
      -                                      "maxLength": 200,
      -                                      "type": "string"
      -                                    },
      -                                    "maxWounds": {
      -                                      "exclusiveMinimum": 0,
      -                                      "maximum": 1000,
      -                                      "type": "integer"
      -                                    }
      -                                  },
      -                                  "required": [
      -                                    "capacity",
      -                                    "carries"
      -                                  ],
      -                                  "type": "object"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "main": {
      -                              "properties": {
      -                                "capacity": {
      -                                  "exclusiveMinimum": 0,
      -                                  "maximum": 1000,
      -                                  "type": "integer"
      -                                },
      -                                "carries": {
      -                                  "maxLength": 200,
      -                                  "type": "string"
      -                                },
      -                                "maxWounds": {
      -                                  "exclusiveMinimum": 0,
      -                                  "maximum": 1000,
      -                                  "type": "integer"
      -                                }
      -                              },
      -                              "required": [
      -                                "capacity",
      -                                "carries"
      -                              ],
      -                              "type": "object"
      -                            },
      -                            "pools": {
      -                              "items": {
      -                                "properties": {
      -                                  "capacity": {
      -                                    "exclusiveMinimum": 0,
      -                                    "maximum": 1000,
      -                                    "type": "integer"
      -                                  },
      -                                  "carries": {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  "maxWounds": {
      -                                    "exclusiveMinimum": 0,
      -                                    "maximum": 1000,
      -                                    "type": "integer"
      -                                  }
      -                                },
      -                                "required": [
      -                                  "capacity",
      -                                  "carries"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "maxItems": 20,
      -                              "type": "array"
      -                            },
      -                            "space": {
      -                              "items": {
      -                                "properties": {
      -                                  "keywords": {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  "moreWoundsThan": {
      -                                    "maximum": 1000,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  "size": {
      -                                    "exclusiveMinimum": 0,
      -                                    "maximum": 1000,
      -                                    "type": "integer"
      -                                  }
      -                                },
      -                                "required": [
      -                                  "size"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "maxItems": 20,
      -                              "type": "array"
      -                            }
      -                          },
      -                          "required": [
      -                            "main",
      -                            "instead",
      -                            "conditions",
      -                            "pools",
      -                            "alternatives",
      -                            "excluded",
      -                            "space"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "transportRule": {
      -                          "maxLength": 4000,
      -                          "type": "string"
      -                        },
      -                        "upgrades": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "wargear": {
      -                          "items": {
      -                            "properties": {
      -                              "count": {
      -                                "maximum": 100,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "name",
      -                              "count"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 200,
      -                          "type": "array"
      -                        },
      -                        "warlord": {
      -                          "type": "boolean"
      -                        },
      -                        "warlordEligible": {
      -                          "type": "boolean"
      -                        },
      -                        "wounds": {
      -                          "maximum": 100,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "points",
      -                        "models"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 200,
      -                    "type": "array"
      -                  },
      -                  "waivedRules": {
      -                    "items": {
      -                      "enum": [
      -                        "points-limit",
      -                        "detachments",
      -                        "detachment-points",
      -                        "kotc-infantry",
      -                        "kotc-warlord",
      -                        "kotc-epic-heroes",
      -                        "kotc-toughness",
      -                        "kotc-datasheet-copies"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "maxItems": 8,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "catalogueId",
      -                  "revision",
      -                  "limit",
      -                  "detachment",
      -                  "disposition",
      -                  "units"
      -                ],
      -                "type": "object"
      -              },
      -              "id": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "lentBy": {
      -                "properties": {
      -                  "id": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "name": {
      -                    "maxLength": 48,
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "id",
      -                  "name"
      -                ],
      -                "type": "object"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "type": "string"
      -              },
      -              "reminders": {
      -                "items": {
      -                  "properties": {
      -                    "ability": {
      -                      "maxLength": 80,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "description": {
      -                      "maxLength": 10000,
      -                      "type": "string"
      -                    },
      -                    "key": {
      -                      "maxLength": 240,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "timings": {
      -                      "items": {
      -                        "oneOf": [
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "phase-start",
      -                                  "phase-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "enum": [
      -                                  "command",
      -                                  "movement",
      -                                  "shooting",
      -                                  "charge",
      -                                  "fight",
      -                                  "any"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "turn-start",
      -                                  "turn-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "round-start",
      -                                  "round-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "const": "either",
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          }
      -                        ]
      -                      },
      -                      "maxItems": 10,
      -                      "minItems": 1,
      -                      "type": "array"
      -                    },
      -                    "unit": {
      -                      "properties": {
      -                        "index": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "index",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "whileDestroyed": {
      -                      "type": "boolean"
      -                    }
      -                  },
      -                  "required": [
      -                    "key",
      -                    "ability",
      -                    "description",
      -                    "timings"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 100,
      -                "type": "array"
      -              },
      -              "remindersEnabled": {
      -                "type": "boolean"
      -              },
      -              "text": {
      -                "maxLength": 20000,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "name",
      -              "text"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "roster"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "destroyed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "set-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "destroyed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-prep",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "primary": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "awards": {
      -                    "items": {
      -                      "properties": {
      -                        "criteria": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 2000,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "cumulative": {
      -                          "type": "boolean"
      -                        },
      -                        "group": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 100,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "max": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 100,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "mode": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 40,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "per": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 200,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "trigger": {
      -                          "properties": {
      -                            "phase": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "playerTurn": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMax": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMin": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "timing": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            }
      -                          },
      -                          "required": [
      -                            "timing",
      -                            "phase",
      -                            "playerTurn",
      -                            "roundMin",
      -                            "roundMax"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "vp": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "vp",
      -                        "per",
      -                        "mode",
      -                        "max",
      -                        "group",
      -                        "cumulative",
      -                        "criteria",
      -                        "trigger"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "key": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "name": {
      -                    "maxLength": 80,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "selection": {
      -                    "enum": [
      -                      "punishment",
      -                      "guards",
      -                      "tempting-target",
      -                      "beacon",
      -                      "locate-and-deny",
      -                      "sensor-sweep",
      -                      "consecrate"
      -                    ],
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "key",
      -                  "name"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon",
      -                    "locate-and-deny",
      -                    "sensor-sweep",
      -                    "consecrate"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 6,
      -            "type": "array"
      -          },
      -          "secondaryDeck": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon",
      -                    "locate-and-deny",
      -                    "sensor-sweep",
      -                    "consecrate"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 60,
      -            "type": "array"
      -          },
      -          "secondaryMode": {
      -            "enum": [
      -              "tactical",
      -              "fixed"
      -            ],
      -            "type": "string"
      -          },
      -          "stratagems": {
      -            "items": {
      -              "properties": {
      -                "cp": {
      -                  "maximum": 6,
      -                  "minimum": 0,
      -                  "type": "integer"
      -                },
      -                "detachment": {
      -                  "maxLength": 249,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "limit": {
      -                  "enum": [
      -                    "phase",
      -                    "turn",
      -                    "battle-round",
      -                    "battle",
      -                    "unlimited"
      -                  ],
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "phases": {
      -                  "items": {
      -                    "enum": [
      -                      "command",
      -                      "movement",
      -                      "shooting",
      -                      "charge",
      -                      "fight",
      -                      "end"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "maxItems": 6,
      -                  "type": "array"
      -                },
      -                "turn": {
      -                  "enum": [
      -                    "your-turn",
      -                    "opponent-turn",
      -                    "either"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name",
      -                "cp",
      -                "limit"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 48,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagems",
      -          "secondaries",
      -          "primary",
      -          "secondaryMode"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "deployed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "deploy-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "deployed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "formation": {
      -            "enum": [
      -              "battlefield",
      -              "strategic-reserves",
      -              "deep-strike",
      -              "embarked"
      -            ],
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-unit-formation",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "transportKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "formation"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-painted",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "painted"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "wound-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "damage-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-deployment",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-battlefield",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "terrainLayoutId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId",
      -          "terrainLayoutId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "use-stratagem",
      -            "type": "string"
      -          },
      -          "missed": {
      -            "properties": {
      -              "phase": {
      -                "enum": [
      -                  "command",
      -                  "movement",
      -                  "shooting",
      -                  "charge",
      -                  "fight",
      -                  "end"
      -                ],
      -                "type": "string"
      -              },
      -              "round": {
      -                "maximum": 5,
      -                "minimum": 1,
      -                "type": "integer"
      -              },
      -              "turn": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "round",
      -              "phase",
      -              "turn"
      -            ],
      -            "type": "object"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "use-new-orders",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon",
      -                  "locate-and-deny",
      -                  "sensor-sweep",
      -                  "consecrate"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          },
      -          "secondaryKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "stratagemKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagemKey",
      -          "secondaryKey",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "score-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "score-settlement",
      -            "type": "string"
      -          },
      -          "missed": {
      -            "properties": {
      -              "phase": {
      -                "enum": [
      -                  "command",
      -                  "movement",
      -                  "shooting",
      -                  "charge",
      -                  "fight",
      -                  "end"
      -                ],
      -                "type": "string"
      -              },
      -              "round": {
      -                "maximum": 5,
      -                "minimum": 1,
      -                "type": "integer"
      -              },
      -              "turn": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "round",
      -              "phase",
      -              "turn"
      -            ],
      -            "type": "object"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "round": {
      -            "maximum": 5,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "scores": {
      -            "items": {
      -              "oneOf": [
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "primary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "final": {
      -                      "properties": {
      -                        "claims": {
      -                          "items": {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "delta": {
      -                          "exclusiveMinimum": 0,
      -                          "maximum": 9007199254740991,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "claims",
      -                        "delta"
      -                      ],
      -                      "type": "object"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "secondary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "key": {
      -                      "maxLength": 64,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "status": {
      -                      "const": "achieved",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "key",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                }
      -              ]
      -            },
      -            "maxItems": 31,
      -            "minItems": 1,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "scores"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-secondary-status",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "status": {
      -            "enum": [
      -              "active",
      -              "achieved",
      -              "discarded",
      -              "returned"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "status"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon",
      -                  "locate-and-deny",
      -                  "sensor-sweep",
      -                  "consecrate"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondaries",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon",
      -                    "locate-and-deny",
      -                    "sensor-sweep",
      -                    "consecrate"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 2,
      -            "minItems": 1,
      -            "type": "array"
      -          },
      -          "selected": {
      -            "const": true,
      -            "type": "boolean"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondaries"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-draw",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-scoring",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "select-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon",
      -                  "locate-and-deny",
      -                  "sensor-sweep",
      -                  "consecrate"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reveal-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "begin-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "adjust-cp",
      -            "type": "string"
      -          },
      -          "missed": {
      -            "properties": {
      -              "phase": {
      -                "enum": [
      -                  "command",
      -                  "movement",
      -                  "shooting",
      -                  "charge",
      -                  "fight",
      -                  "end"
      -                ],
      -                "type": "string"
      -              },
      -              "round": {
      -                "maximum": 5,
      -                "minimum": 1,
      -                "type": "integer"
      -              },
      -              "turn": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "round",
      -              "phase",
      -              "turn"
      -            ],
      -            "type": "object"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "gainCp": {
      -            "type": "boolean"
      -          },
      -          "keys": {
      -            "items": {
      -              "maxLength": 64,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "kind": {
      -            "const": "resolve-tactical-hand",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "category": {
      -            "enum": [
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          },
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "score",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "category",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "correct-player",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "resource": {
      -            "enum": [
      -              "cp",
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "playerId",
      -          "resource",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "settle-opponent-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "request-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "cancel-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "pause-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "resume-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "concededBy": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "end-battle",
      -            "type": "string"
      -          },
      -          "reason": {
      -            "enum": [
      -              "completed",
      -              "finished-early",
      -              "conceded"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reopen-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "add-note",
      -            "type": "string"
      -          },
      -          "text": {
      -            "maxLength": 500,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "text"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "undo",
      -            "type": "string"
      -          },
      -          "target": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "target"
      -        ],
      -        "type": "object"
      -      }
      -    ]
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "attach-saved-roster",
      -        "type": "string"
      -      },
      -      "playerId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "rosterId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "rosterId"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "oneOf": [
      +      {
      +        "properties": {
      +          "cardKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "select-mission",
      +            "type": "string"
      +          },
      +          "occurrence": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "selection": {
      +            "oneOf": [
      +              {
      +                "properties": {
      +                  "fallback": {
      +                    "type": "boolean"
      +                  },
      +                  "kind": {
      +                    "const": "punishment",
      +                    "type": "string"
      +                  },
      +                  "qualified": {
      +                    "type": "boolean"
      +                  },
      +                  "unavailable": {
      +                    "const": true,
      +                    "type": "boolean"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "playerId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "rosterSeq": {
      +                          "exclusiveMinimum": 0,
      +                          "maximum": 9007199254740991,
      +                          "type": "integer"
      +                        },
      +                        "unitKey": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "playerId",
      +                        "unitKey",
      +                        "rosterSeq"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "units",
      +                  "fallback",
      +                  "qualified"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "guards": {
      +                    "items": {
      +                      "properties": {
      +                        "objective": {
      +                          "properties": {
      +                            "key": {
      +                              "maxLength": 128,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "name": {
      +                              "maxLength": 80,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "key",
      +                            "name"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "unit": {
      +                          "properties": {
      +                            "playerId": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "rosterSeq": {
      +                              "exclusiveMinimum": 0,
      +                              "maximum": 9007199254740991,
      +                              "type": "integer"
      +                            },
      +                            "unitKey": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "playerId",
      +                            "unitKey",
      +                            "rosterSeq"
      +                          ],
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "objective",
      +                        "unit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "guards",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "guards"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "kind": {
      +                    "const": "tempting-target",
      +                    "type": "string"
      +                  },
      +                  "noMansLand": {
      +                    "type": "boolean"
      +                  },
      +                  "notHome": {
      +                    "type": "boolean"
      +                  },
      +                  "objective": {
      +                    "properties": {
      +                      "key": {
      +                        "maxLength": 128,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "key",
      +                      "name"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "objective",
      +                  "notHome",
      +                  "noMansLand"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "kind": {
      +                    "const": "beacon",
      +                    "type": "string"
      +                  },
      +                  "note": {
      +                    "maxLength": 200,
      +                    "type": "string"
      +                  },
      +                  "unit": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "playerId": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "rosterSeq": {
      +                            "exclusiveMinimum": 0,
      +                            "maximum": 9007199254740991,
      +                            "type": "integer"
      +                          },
      +                          "unitKey": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "playerId",
      +                          "unitKey",
      +                          "rosterSeq"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "unit",
      +                  "note"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "allEligible": {
      +                    "type": "boolean"
      +                  },
      +                  "areas": {
      +                    "items": {
      +                      "properties": {
      +                        "key": {
      +                          "maxLength": 128,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 5,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "locate-and-deny",
      +                    "type": "string"
      +                  },
      +                  "outsideZone": {
      +                    "type": "boolean"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "areas",
      +                  "outsideZone",
      +                  "allEligible"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "controlled": {
      +                    "type": "boolean"
      +                  },
      +                  "kind": {
      +                    "const": "sensor-sweep",
      +                    "type": "string"
      +                  },
      +                  "marker": {
      +                    "properties": {
      +                      "key": {
      +                        "maxLength": 128,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "playerId": {
      +                        "maxLength": 64,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "key",
      +                      "name",
      +                      "playerId"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "marker",
      +                  "controlled"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "consecrations": {
      +                    "items": {
      +                      "properties": {
      +                        "objective": {
      +                          "properties": {
      +                            "key": {
      +                              "maxLength": 128,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "name": {
      +                              "maxLength": 80,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "key",
      +                            "name"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "unit": {
      +                          "properties": {
      +                            "playerId": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "rosterSeq": {
      +                              "exclusiveMinimum": 0,
      +                              "maximum": 9007199254740991,
      +                              "type": "integer"
      +                            },
      +                            "unitKey": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "playerId",
      +                            "unitKey",
      +                            "rosterSeq"
      +                          ],
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "objective",
      +                        "unit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "consecrate",
      +                    "type": "string"
      +                  },
      +                  "notHome": {
      +                    "type": "boolean"
      +                  },
      +                  "qualified": {
      +                    "type": "boolean"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "consecrations",
      +                  "qualified",
      +                  "notHome"
      +                ],
      +                "type": "object"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "cardKey",
      +          "occurrence",
      +          "selection"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "clockLimitMinutes": {
      +            "anyOf": [
      +              {
      +                "maximum": 300,
      +                "minimum": 5,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "kind": {
      +            "const": "configure-battle",
      +            "type": "string"
      +          },
      +          "limit": {
      +            "anyOf": [
      +              {
      +                "maximum": 10000,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "manual": {
      +            "type": "boolean"
      +          },
      +          "missionPackId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "playerCount": {
      +            "anyOf": [
      +              {
      +                "const": 2,
      +                "type": "number"
      +              },
      +              {
      +                "const": 3,
      +                "type": "number"
      +              },
      +              {
      +                "const": 4,
      +                "type": "number"
      +              }
      +            ]
      +          },
      +          "teamBattle": {
      +            "type": "boolean"
      +          },
      +          "terrainLayoutId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "twistId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "limit",
      +          "missionPackId",
      +          "terrainLayoutId",
      +          "twistId",
      +          "clockLimitMinutes"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reset-setup",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "detach-roster",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "dispositions": {
      +            "items": {
      +              "properties": {
      +                "disposition": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "side": {
      +                  "maximum": 1,
      +                  "minimum": 0,
      +                  "type": "integer"
      +                }
      +              },
      +              "required": [
      +                "side",
      +                "disposition"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 2,
      +            "type": "array"
      +          },
      +          "eventToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "lock-league-rosters",
      +            "type": "string"
      +          },
      +          "leagueToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "leagueToken"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-setup-step",
      +            "type": "string"
      +          },
      +          "step": {
      +            "maximum": 9,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "step"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-attacker",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "attackerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-first-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "disposition": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-side-disposition",
      +            "type": "string"
      +          },
      +          "side": {
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "side",
      +          "disposition"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "attach-roster",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "prep": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "primary": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "awards": {
      +                            "items": {
      +                              "properties": {
      +                                "criteria": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 2000,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "cumulative": {
      +                                  "type": "boolean"
      +                                },
      +                                "group": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 100,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "max": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maximum": 100,
      +                                      "minimum": 0,
      +                                      "type": "integer"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "mode": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 40,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "per": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 200,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "trigger": {
      +                                  "properties": {
      +                                    "phase": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "playerTurn": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMax": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMin": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "timing": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    }
      +                                  },
      +                                  "required": [
      +                                    "timing",
      +                                    "phase",
      +                                    "playerTurn",
      +                                    "roundMin",
      +                                    "roundMax"
      +                                  ],
      +                                  "type": "object"
      +                                },
      +                                "vp": {
      +                                  "maximum": 100,
      +                                  "minimum": 0,
      +                                  "type": "integer"
      +                                }
      +                              },
      +                              "required": [
      +                                "vp",
      +                                "per",
      +                                "mode",
      +                                "max",
      +                                "group",
      +                                "cumulative",
      +                                "criteria",
      +                                "trigger"
      +                              ],
      +                              "type": "object"
      +                            },
      +                            "maxItems": 20,
      +                            "type": "array"
      +                          },
      +                          "key": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "name": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "selection": {
      +                            "enum": [
      +                              "punishment",
      +                              "guards",
      +                              "tempting-target",
      +                              "beacon",
      +                              "locate-and-deny",
      +                              "sensor-sweep",
      +                              "consecrate"
      +                            ],
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "key",
      +                          "name"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "secondaries": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "selection": {
      +                          "enum": [
      +                            "punishment",
      +                            "guards",
      +                            "tempting-target",
      +                            "beacon",
      +                            "locate-and-deny",
      +                            "sensor-sweep",
      +                            "consecrate"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 6,
      +                    "type": "array"
      +                  },
      +                  "secondaryDeck": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "selection": {
      +                          "enum": [
      +                            "punishment",
      +                            "guards",
      +                            "tempting-target",
      +                            "beacon",
      +                            "locate-and-deny",
      +                            "sensor-sweep",
      +                            "consecrate"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 60,
      +                    "type": "array"
      +                  },
      +                  "secondaryMode": {
      +                    "enum": [
      +                      "tactical",
      +                      "fixed"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "stratagems": {
      +                    "items": {
      +                      "properties": {
      +                        "cp": {
      +                          "maximum": 6,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "detachment": {
      +                          "maxLength": 249,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "limit": {
      +                          "enum": [
      +                            "phase",
      +                            "turn",
      +                            "battle-round",
      +                            "battle",
      +                            "unlimited"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "phases": {
      +                          "items": {
      +                            "enum": [
      +                              "command",
      +                              "movement",
      +                              "shooting",
      +                              "charge",
      +                              "fight",
      +                              "end"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 6,
      +                          "type": "array"
      +                        },
      +                        "turn": {
      +                          "enum": [
      +                            "your-turn",
      +                            "opponent-turn",
      +                            "either"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "cp",
      +                        "limit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 48,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "stratagems",
      +                  "secondaries",
      +                  "primary",
      +                  "secondaryMode"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "roster": {
      +            "properties": {
      +              "built": {
      +                "properties": {
      +                  "catalogueId": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "detachment": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 80,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachmentIds": {
      +                    "items": {
      +                      "maxLength": 128,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "detachmentPointBudget": {
      +                    "anyOf": [
      +                      {
      +                        "maximum": 3,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachments": {
      +                    "items": {
      +                      "properties": {
      +                        "name": {
      +                          "maxLength": 80,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 3,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "name",
      +                        "points"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "disposition": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 64,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "dispositions": {
      +                    "items": {
      +                      "maxLength": 64,
      +                      "type": "string"
      +                    },
      +                    "maxItems": 16,
      +                    "type": "array"
      +                  },
      +                  "edition": {
      +                    "properties": {
      +                      "description": {
      +                        "maxLength": 240,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "id": {
      +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "slug": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      +                        "type": "string"
      +                      },
      +                      "status": {
      +                        "enum": [
      +                          "preview",
      +                          "released",
      +                          "retired"
      +                        ],
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "id",
      +                      "name",
      +                      "status"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "limit": {
      +                    "maximum": 10000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "picks": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "catalogueId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "choices": {
      +                          "additionalProperties": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 60,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        },
      +                        "note": {
      +                          "maxLength": 500,
      +                          "type": "string"
      +                        },
      +                        "spreads": {
      +                          "additionalProperties": {
      +                            "additionalProperties": {
      +                              "maximum": 60,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            "propertyNames": {
      +                              "maxLength": 64,
      +                              "type": "string"
      +                            },
      +                            "type": "object"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "toggles": {
      +                          "additionalProperties": {
      +                            "maximum": 1,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "entryId"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 100,
      +                    "type": "array"
      +                  },
      +                  "pointsBudget": {
      +                    "maximum": 10000,
      +                    "minimum": 500,
      +                    "type": "integer"
      +                  },
      +                  "revision": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "strategicReserveLimit": {
      +                    "maximum": 5000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "enhancements": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "formationOptions": {
      +                          "items": {
      +                            "enum": [
      +                              "battlefield",
      +                              "strategic-reserves",
      +                              "deep-strike",
      +                              "embarked"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 4,
      +                          "type": "array"
      +                        },
      +                        "group": {
      +                          "enum": [
      +                            "epic-hero",
      +                            "character",
      +                            "battleline",
      +                            "infantry",
      +                            "swarm",
      +                            "mounted",
      +                            "beast",
      +                            "monster",
      +                            "vehicle",
      +                            "drone",
      +                            "transport",
      +                            "fortification",
      +                            "other"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "joined": {
      +                          "items": {
      +                            "properties": {
      +                              "label": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "label",
      +                              "name"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "keywords": {
      +                          "items": {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 60,
      +                          "type": "array"
      +                        },
      +                        "models": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "note": {
      +                          "maxLength": 500,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "maximum": 10000,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "prebattleRules": {
      +                          "items": {
      +                            "enum": [
      +                              "infiltrators",
      +                              "scouts"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 2,
      +                          "type": "array"
      +                        },
      +                        "strategicReserveExempt": {
      +                          "type": "boolean"
      +                        },
      +                        "transport": {
      +                          "type": "boolean"
      +                        },
      +                        "transportCapacity": {
      +                          "properties": {
      +                            "alternatives": {
      +                              "items": {
      +                                "maxLength": 200,
      +                                "type": "string"
      +                              },
      +                              "maxItems": 20,
      +                              "type": "array"
      +                            },
      +                            "conditions": {
      +                              "items": {
      +                                "properties": {
      +                                  "capacity": {
      +                                    "exclusiveMinimum": 0,
      +                                    "maximum": 1000,
      +                                    "type": "integer"
      +                                  },
      +                                  "carries": {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  "maxWounds": {
      +                                    "exclusiveMinimum": 0,
      +                                    "maximum": 1000,
      +                                    "type": "integer"
      +                                  },
      +                                  "wargear": {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  }
      +                                },
      +                                "required": [
      +                                  "capacity",
      +                                  "carries",
      +                                  "wargear"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "maxItems": 20,
      +                              "type": "array"
      +                            },
      +                            "excluded": {
      +                              "items": {
      +                                "properties": {
      +                                  "except": {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  "keywords": {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  }
      +                                },
      +                                "required": [
      +                                  "keywords"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "maxItems": 20,
      +                              "type": "array"
      +                            },
      +                            "instead": {
      +                              "anyOf": [
      +                                {
      +                                  "properties": {
      +                                    "capacity": {
      +                                      "exclusiveMinimum": 0,
      +                                      "maximum": 1000,
      +                                      "type": "integer"
      +                                    },
      +                                    "carries": {
      +                                      "maxLength": 200,
      +                                      "type": "string"
      +                                    },
      +                                    "maxWounds": {
      +                                      "exclusiveMinimum": 0,
      +                                      "maximum": 1000,
      +                                      "type": "integer"
      +                                    }
      +                                  },
      +                                  "required": [
      +                                    "capacity",
      +                                    "carries"
      +                                  ],
      +                                  "type": "object"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "main": {
      +                              "properties": {
      +                                "capacity": {
      +                                  "exclusiveMinimum": 0,
      +                                  "maximum": 1000,
      +                                  "type": "integer"
      +                                },
      +                                "carries": {
      +                                  "maxLength": 200,
      +                                  "type": "string"
      +                                },
      +                                "maxWounds": {
      +                                  "exclusiveMinimum": 0,
      +                                  "maximum": 1000,
      +                                  "type": "integer"
      +                                }
      +                              },
      +                              "required": [
      +                                "capacity",
      +                                "carries"
      +                              ],
      +                              "type": "object"
      +                            },
      +                            "pools": {
      +                              "items": {
      +                                "properties": {
      +                                  "capacity": {
      +                                    "exclusiveMinimum": 0,
      +                                    "maximum": 1000,
      +                                    "type": "integer"
      +                                  },
      +                                  "carries": {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  "maxWounds": {
      +                                    "exclusiveMinimum": 0,
      +                                    "maximum": 1000,
      +                                    "type": "integer"
      +                                  }
      +                                },
      +                                "required": [
      +                                  "capacity",
      +                                  "carries"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "maxItems": 20,
      +                              "type": "array"
      +                            },
      +                            "space": {
      +                              "items": {
      +                                "properties": {
      +                                  "keywords": {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  "moreWoundsThan": {
      +                                    "maximum": 1000,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  "size": {
      +                                    "exclusiveMinimum": 0,
      +                                    "maximum": 1000,
      +                                    "type": "integer"
      +                                  }
      +                                },
      +                                "required": [
      +                                  "size"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "maxItems": 20,
      +                              "type": "array"
      +                            }
      +                          },
      +                          "required": [
      +                            "main",
      +                            "instead",
      +                            "conditions",
      +                            "pools",
      +                            "alternatives",
      +                            "excluded",
      +                            "space"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "transportRule": {
      +                          "maxLength": 4000,
      +                          "type": "string"
      +                        },
      +                        "upgrades": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "wargear": {
      +                          "items": {
      +                            "properties": {
      +                              "count": {
      +                                "maximum": 100,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "name",
      +                              "count"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 200,
      +                          "type": "array"
      +                        },
      +                        "warlord": {
      +                          "type": "boolean"
      +                        },
      +                        "warlordEligible": {
      +                          "type": "boolean"
      +                        },
      +                        "wounds": {
      +                          "maximum": 100,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "points",
      +                        "models"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 200,
      +                    "type": "array"
      +                  },
      +                  "waivedRules": {
      +                    "items": {
      +                      "enum": [
      +                        "points-limit",
      +                        "detachments",
      +                        "detachment-points",
      +                        "kotc-infantry",
      +                        "kotc-warlord",
      +                        "kotc-epic-heroes",
      +                        "kotc-toughness",
      +                        "kotc-datasheet-copies"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "maxItems": 8,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "catalogueId",
      +                  "revision",
      +                  "limit",
      +                  "detachment",
      +                  "disposition",
      +                  "units"
      +                ],
      +                "type": "object"
      +              },
      +              "id": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "lentBy": {
      +                "properties": {
      +                  "id": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "maxLength": 48,
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "id",
      +                  "name"
      +                ],
      +                "type": "object"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "type": "string"
      +              },
      +              "reminders": {
      +                "items": {
      +                  "properties": {
      +                    "ability": {
      +                      "maxLength": 80,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "description": {
      +                      "maxLength": 10000,
      +                      "type": "string"
      +                    },
      +                    "key": {
      +                      "maxLength": 240,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "timings": {
      +                      "items": {
      +                        "oneOf": [
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "phase-start",
      +                                  "phase-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "enum": [
      +                                  "command",
      +                                  "movement",
      +                                  "shooting",
      +                                  "charge",
      +                                  "fight",
      +                                  "any"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "turn-start",
      +                                  "turn-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "round-start",
      +                                  "round-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "const": "either",
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          }
      +                        ]
      +                      },
      +                      "maxItems": 10,
      +                      "minItems": 1,
      +                      "type": "array"
      +                    },
      +                    "unit": {
      +                      "properties": {
      +                        "index": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "index",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "whileDestroyed": {
      +                      "type": "boolean"
      +                    }
      +                  },
      +                  "required": [
      +                    "key",
      +                    "ability",
      +                    "description",
      +                    "timings"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 100,
      +                "type": "array"
      +              },
      +              "remindersEnabled": {
      +                "type": "boolean"
      +              },
      +              "text": {
      +                "maxLength": 20000,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "text"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "roster"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "destroyed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "set-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "destroyed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-prep",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "primary": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "awards": {
      +                    "items": {
      +                      "properties": {
      +                        "criteria": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 2000,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "cumulative": {
      +                          "type": "boolean"
      +                        },
      +                        "group": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 100,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "max": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 100,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "mode": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 40,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "per": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 200,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "trigger": {
      +                          "properties": {
      +                            "phase": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "playerTurn": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMax": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMin": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "timing": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            }
      +                          },
      +                          "required": [
      +                            "timing",
      +                            "phase",
      +                            "playerTurn",
      +                            "roundMin",
      +                            "roundMax"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "vp": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "vp",
      +                        "per",
      +                        "mode",
      +                        "max",
      +                        "group",
      +                        "cumulative",
      +                        "criteria",
      +                        "trigger"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "key": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "maxLength": 80,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "selection": {
      +                    "enum": [
      +                      "punishment",
      +                      "guards",
      +                      "tempting-target",
      +                      "beacon",
      +                      "locate-and-deny",
      +                      "sensor-sweep",
      +                      "consecrate"
      +                    ],
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "key",
      +                  "name"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 6,
      +            "type": "array"
      +          },
      +          "secondaryDeck": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 60,
      +            "type": "array"
      +          },
      +          "secondaryMode": {
      +            "enum": [
      +              "tactical",
      +              "fixed"
      +            ],
      +            "type": "string"
      +          },
      +          "stratagems": {
      +            "items": {
      +              "properties": {
      +                "cp": {
      +                  "maximum": 6,
      +                  "minimum": 0,
      +                  "type": "integer"
      +                },
      +                "detachment": {
      +                  "maxLength": 249,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "limit": {
      +                  "enum": [
      +                    "phase",
      +                    "turn",
      +                    "battle-round",
      +                    "battle",
      +                    "unlimited"
      +                  ],
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "phases": {
      +                  "items": {
      +                    "enum": [
      +                      "command",
      +                      "movement",
      +                      "shooting",
      +                      "charge",
      +                      "fight",
      +                      "end"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "maxItems": 6,
      +                  "type": "array"
      +                },
      +                "turn": {
      +                  "enum": [
      +                    "your-turn",
      +                    "opponent-turn",
      +                    "either"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name",
      +                "cp",
      +                "limit"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 48,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagems",
      +          "secondaries",
      +          "primary",
      +          "secondaryMode"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "deployed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "deploy-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "deployed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "formation": {
      +            "enum": [
      +              "battlefield",
      +              "strategic-reserves",
      +              "deep-strike",
      +              "embarked"
      +            ],
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-unit-formation",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "transportKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "formation"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-painted",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "painted"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "wound-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "damage-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-deployment",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-battlefield",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "terrainLayoutId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId",
      +          "terrainLayoutId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "use-stratagem",
      +            "type": "string"
      +          },
      +          "missed": {
      +            "properties": {
      +              "phase": {
      +                "enum": [
      +                  "command",
      +                  "movement",
      +                  "shooting",
      +                  "charge",
      +                  "fight",
      +                  "end"
      +                ],
      +                "type": "string"
      +              },
      +              "round": {
      +                "maximum": 5,
      +                "minimum": 1,
      +                "type": "integer"
      +              },
      +              "turn": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "round",
      +              "phase",
      +              "turn"
      +            ],
      +            "type": "object"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "use-new-orders",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          },
      +          "secondaryKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "stratagemKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagemKey",
      +          "secondaryKey",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "score-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "score-settlement",
      +            "type": "string"
      +          },
      +          "missed": {
      +            "properties": {
      +              "phase": {
      +                "enum": [
      +                  "command",
      +                  "movement",
      +                  "shooting",
      +                  "charge",
      +                  "fight",
      +                  "end"
      +                ],
      +                "type": "string"
      +              },
      +              "round": {
      +                "maximum": 5,
      +                "minimum": 1,
      +                "type": "integer"
      +              },
      +              "turn": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "round",
      +              "phase",
      +              "turn"
      +            ],
      +            "type": "object"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "round": {
      +            "maximum": 5,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "scores": {
      +            "items": {
      +              "oneOf": [
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "primary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "final": {
      +                      "properties": {
      +                        "claims": {
      +                          "items": {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "delta": {
      +                          "exclusiveMinimum": 0,
      +                          "maximum": 9007199254740991,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "claims",
      +                        "delta"
      +                      ],
      +                      "type": "object"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "secondary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "key": {
      +                      "maxLength": 64,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "status": {
      +                      "const": "achieved",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "key",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                }
      +              ]
      +            },
      +            "maxItems": 31,
      +            "minItems": 1,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "scores"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-secondary-status",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "status": {
      +            "enum": [
      +              "active",
      +              "achieved",
      +              "discarded",
      +              "returned"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondaries",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 2,
      +            "minItems": 1,
      +            "type": "array"
      +          },
      +          "selected": {
      +            "const": true,
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondaries"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-draw",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-scoring",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "select-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reveal-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "begin-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "adjust-cp",
      +            "type": "string"
      +          },
      +          "missed": {
      +            "properties": {
      +              "phase": {
      +                "enum": [
      +                  "command",
      +                  "movement",
      +                  "shooting",
      +                  "charge",
      +                  "fight",
      +                  "end"
      +                ],
      +                "type": "string"
      +              },
      +              "round": {
      +                "maximum": 5,
      +                "minimum": 1,
      +                "type": "integer"
      +              },
      +              "turn": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "round",
      +              "phase",
      +              "turn"
      +            ],
      +            "type": "object"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "gainCp": {
      +            "type": "boolean"
      +          },
      +          "keys": {
      +            "items": {
      +              "maxLength": 64,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "kind": {
      +            "const": "resolve-tactical-hand",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "category": {
      +            "enum": [
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          },
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "score",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "category",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "correct-player",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "resource": {
      +            "enum": [
      +              "cp",
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "playerId",
      +          "resource",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "settle-opponent-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "request-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "cancel-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "pause-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "resume-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "concededBy": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "end-battle",
      +            "type": "string"
      +          },
      +          "reason": {
      +            "enum": [
      +              "completed",
      +              "finished-early",
      +              "conceded"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reopen-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "add-note",
      +            "type": "string"
      +          },
      +          "text": {
      +            "maxLength": 500,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "text"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "undo",
      +            "type": "string"
      +          },
      +          "target": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "target"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "attach-saved-roster",
      +        "type": "string"
      +      },
      +      "playerId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "rosterId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "rosterId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "draft": {
      +        "properties": {
      +          "borrowedDetachmentId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 128,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "default": null
      +          },
      +          "catalogueId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "detachmentIds": {
      +            "items": {
      +              "maxLength": 128,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "maxItems": 3,
      +            "type": "array"
      +          },
      +          "disposition": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "id": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "limit": {
      +            "maximum": 10000,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "name": {
      +            "maxLength": 80,
      +            "type": "string"
      +          },
      +          "optionalRules": {
      +            "items": {
      +              "enum": [
      +                "kotc-borrowed-disposition"
      +              ],
      +              "type": "string"
      +            },
      +            "maxItems": 1,
      +            "type": "array"
      +          },
      +          "picks": {
      +            "items": {
      +              "properties": {
      +                "attachedTo": {
      +                  "maximum": 99,
      +                  "minimum": 0,
      +                  "type": "integer"
      +                },
      +                "catalogueId": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "choices": {
      +                  "additionalProperties": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "propertyNames": {
      +                    "maxLength": 400,
      +                    "type": "string"
      +                  },
      +                  "type": "object"
      +                },
      +                "entryId": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "models": {
      +                  "maximum": 60,
      +                  "minimum": 1,
      +                  "type": "integer"
      +                },
      +                "note": {
      +                  "maxLength": 500,
      +                  "type": "string"
      +                },
      +                "spreads": {
      +                  "additionalProperties": {
      +                    "additionalProperties": {
      +                      "maximum": 60,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    },
      +                    "propertyNames": {
      +                      "maxLength": 64,
      +                      "type": "string"
      +                    },
      +                    "type": "object"
      +                  },
      +                  "propertyNames": {
      +                    "maxLength": 400,
      +                    "type": "string"
      +                  },
      +                  "type": "object"
      +                },
      +                "toggles": {
      +                  "additionalProperties": {
      +                    "maximum": 1,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "propertyNames": {
      +                    "maxLength": 400,
      +                    "type": "string"
      +                  },
      +                  "type": "object"
      +                }
      +              },
      +              "required": [
      +                "entryId"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 100,
      +            "type": "array"
      +          },
      +          "pointsBudget": {
      +            "anyOf": [
      +              {
      +                "maximum": 10000,
      +                "minimum": 500,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "prep": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "reminders": {
      +                    "default": [],
      +                    "items": {
      +                      "properties": {
      +                        "ability": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "description": {
      +                          "maxLength": 10000,
      +                          "type": "string"
      +                        },
      +                        "key": {
      +                          "maxLength": 240,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "timings": {
      +                          "items": {
      +                            "oneOf": [
      +                              {
      +                                "properties": {
      +                                  "firstRoundOnly": {
      +                                    "type": "boolean"
      +                                  },
      +                                  "moment": {
      +                                    "enum": [
      +                                      "phase-start",
      +                                      "phase-end"
      +                                    ],
      +                                    "type": "string"
      +                                  },
      +                                  "phase": {
      +                                    "enum": [
      +                                      "command",
      +                                      "movement",
      +                                      "shooting",
      +                                      "charge",
      +                                      "fight",
      +                                      "any"
      +                                    ],
      +                                    "type": "string"
      +                                  },
      +                                  "turn": {
      +                                    "enum": [
      +                                      "your-turn",
      +                                      "opponent-turn",
      +                                      "either"
      +                                    ],
      +                                    "type": "string"
      +                                  }
      +                                },
      +                                "required": [
      +                                  "moment",
      +                                  "phase",
      +                                  "turn"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              {
      +                                "properties": {
      +                                  "firstRoundOnly": {
      +                                    "type": "boolean"
      +                                  },
      +                                  "moment": {
      +                                    "enum": [
      +                                      "turn-start",
      +                                      "turn-end"
      +                                    ],
      +                                    "type": "string"
      +                                  },
      +                                  "phase": {
      +                                    "type": "null"
      +                                  },
      +                                  "turn": {
      +                                    "enum": [
      +                                      "your-turn",
      +                                      "opponent-turn",
      +                                      "either"
      +                                    ],
      +                                    "type": "string"
      +                                  }
      +                                },
      +                                "required": [
      +                                  "moment",
      +                                  "phase",
      +                                  "turn"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              {
      +                                "properties": {
      +                                  "firstRoundOnly": {
      +                                    "type": "boolean"
      +                                  },
      +                                  "moment": {
      +                                    "enum": [
      +                                      "round-start",
      +                                      "round-end"
      +                                    ],
      +                                    "type": "string"
      +                                  },
      +                                  "phase": {
      +                                    "type": "null"
      +                                  },
      +                                  "turn": {
      +                                    "const": "either",
      +                                    "type": "string"
      +                                  }
      +                                },
      +                                "required": [
      +                                  "moment",
      +                                  "phase",
      +                                  "turn"
      +                                ],
      +                                "type": "object"
      +                              }
      +                            ]
      +                          },
      +                          "maxItems": 10,
      +                          "minItems": 1,
      +                          "type": "array"
      +                        },
      +                        "unit": {
      +                          "properties": {
      +                            "index": {
      +                              "maximum": 99,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            "name": {
      +                              "maxLength": 80,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "index",
      +                            "name"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "whileDestroyed": {
      +                          "type": "boolean"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "ability",
      +                        "description",
      +                        "timings"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 100,
      +                    "type": "array"
      +                  },
      +                  "remindersEnabled": {
      +                    "default": true,
      +                    "type": "boolean"
      +                  },
      +                  "secondaries": {
      +                    "items": {
      +                      "properties": {
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 6,
      +                    "type": "array"
      +                  },
      +                  "stratagems": {
      +                    "items": {
      +                      "properties": {
      +                        "cp": {
      +                          "maximum": 6,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "limit": {
      +                          "enum": [
      +                            "phase",
      +                            "turn",
      +                            "battle-round",
      +                            "battle",
      +                            "unlimited"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "phases": {
      +                          "items": {
      +                            "enum": [
      +                              "command",
      +                              "movement",
      +                              "shooting",
      +                              "charge",
      +                              "fight",
      +                              "end"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 6,
      +                          "type": "array"
      +                        },
      +                        "turn": {
      +                          "enum": [
      +                            "your-turn",
      +                            "opponent-turn",
      +                            "either"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "cp",
      +                        "limit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 48,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "stratagems",
      +                  "secondaries"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "source": {
      +            "default": "editable",
      +            "enum": [
      +              "legacy",
      +              "editable",
      +              "praetorium",
      +              "battlebase",
      +              "newrecruit",
      +              "roster-file"
      +            ],
      +            "type": "string"
      +          },
      +          "visibility": {
      +            "default": "private",
      +            "enum": [
      +              "private",
      +              "unlisted",
      +              "public"
      +            ],
      +            "type": "string"
      +          },
      +          "waivedRules": {
      +            "items": {
      +              "enum": [
      +                "points-limit",
      +                "detachments",
      +                "detachment-points",
      +                "kotc-infantry",
      +                "kotc-warlord",
      +                "kotc-epic-heroes",
      +                "kotc-toughness",
      +                "kotc-datasheet-copies"
      +              ],
      +              "type": "string"
      +            },
      +            "maxItems": 8,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "catalogueId",
      +          "detachmentIds",
      +          "disposition",
      +          "limit",
      +          "picks",
      +          "prep"
      +        ],
      +        "type": "object"
      +      },
      +      "kind": {
      +        "const": "attach-draft-roster",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "draft"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed1 schema field changed
    • changedInput schema / properties / command / anyOf
      Previous value: -[
      -  {
      -    "oneOf": [
      -      {
      -        "properties": {
      -          "cardKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "select-mission",
      -            "type": "string"
      -          },
      -          "occurrence": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "selection": {
      -            "oneOf": [
      -              {
      -                "properties": {
      -                  "fallback": {
      -                    "type": "boolean"
      -                  },
      -                  "kind": {
      -                    "const": "punishment",
      -                    "type": "string"
      -                  },
      -                  "qualified": {
      -                    "type": "boolean"
      -                  },
      -                  "unavailable": {
      -                    "const": true,
      -                    "type": "boolean"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "playerId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "rosterSeq": {
      -                          "exclusiveMinimum": 0,
      -                          "maximum": 9007199254740991,
      -                          "type": "integer"
      -                        },
      -                        "unitKey": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "playerId",
      -                        "unitKey",
      -                        "rosterSeq"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "units",
      -                  "fallback",
      -                  "qualified"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "guards": {
      -                    "items": {
      -                      "properties": {
      -                        "objective": {
      -                          "properties": {
      -                            "key": {
      -                              "maxLength": 128,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "name": {
      -                              "maxLength": 80,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "key",
      -                            "name"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "unit": {
      -                          "properties": {
      -                            "playerId": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "rosterSeq": {
      -                              "exclusiveMinimum": 0,
      -                              "maximum": 9007199254740991,
      -                              "type": "integer"
      -                            },
      -                            "unitKey": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "playerId",
      -                            "unitKey",
      -                            "rosterSeq"
      -                          ],
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "objective",
      -                        "unit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "guards",
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "guards"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "kind": {
      -                    "const": "tempting-target",
      -                    "type": "string"
      -                  },
      -                  "noMansLand": {
      -                    "type": "boolean"
      -                  },
      -                  "notHome": {
      -                    "type": "boolean"
      -                  },
      -                  "objective": {
      -                    "properties": {
      -                      "key": {
      -                        "maxLength": 128,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "key",
      -                      "name"
      -                    ],
      -                    "type": "object"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "objective",
      -                  "notHome",
      -                  "noMansLand"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "kind": {
      -                    "const": "beacon",
      -                    "type": "string"
      -                  },
      -                  "note": {
      -                    "maxLength": 200,
      -                    "type": "string"
      -                  },
      -                  "unit": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "playerId": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "rosterSeq": {
      -                            "exclusiveMinimum": 0,
      -                            "maximum": 9007199254740991,
      -                            "type": "integer"
      -                          },
      -                          "unitKey": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "playerId",
      -                          "unitKey",
      -                          "rosterSeq"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "unit",
      -                  "note"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "allEligible": {
      -                    "type": "boolean"
      -                  },
      -                  "areas": {
      -                    "items": {
      -                      "properties": {
      -                        "key": {
      -                          "maxLength": 128,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 5,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "locate-and-deny",
      -                    "type": "string"
      -                  },
      -                  "outsideZone": {
      -                    "type": "boolean"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "areas",
      -                  "outsideZone",
      -                  "allEligible"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "controlled": {
      -                    "type": "boolean"
      -                  },
      -                  "kind": {
      -                    "const": "sensor-sweep",
      -                    "type": "string"
      -                  },
      -                  "marker": {
      -                    "properties": {
      -                      "key": {
      -                        "maxLength": 128,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "playerId": {
      -                        "maxLength": 64,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "key",
      -                      "name",
      -                      "playerId"
      -                    ],
      -                    "type": "object"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "marker",
      -                  "controlled"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "consecrations": {
      -                    "items": {
      -                      "properties": {
      -                        "objective": {
      -                          "properties": {
      -                            "key": {
      -                              "maxLength": 128,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "name": {
      -                              "maxLength": 80,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "key",
      -                            "name"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "unit": {
      -                          "properties": {
      -                            "playerId": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "rosterSeq": {
      -                              "exclusiveMinimum": 0,
      -                              "maximum": 9007199254740991,
      -                              "type": "integer"
      -                            },
      -                            "unitKey": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "playerId",
      -                            "unitKey",
      -                            "rosterSeq"
      -                          ],
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "objective",
      -                        "unit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "consecrate",
      -                    "type": "string"
      -                  },
      -                  "notHome": {
      -                    "type": "boolean"
      -                  },
      -                  "qualified": {
      -                    "type": "boolean"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "consecrations",
      -                  "qualified",
      -                  "notHome"
      -                ],
      -                "type": "object"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "cardKey",
      -          "occurrence",
      -          "selection"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "clockLimitMinutes": {
      -            "anyOf": [
      -              {
      -                "maximum": 300,
      -                "minimum": 5,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "kind": {
      -            "const": "configure-battle",
      -            "type": "string"
      -          },
      -          "limit": {
      -            "anyOf": [
      -              {
      -                "maximum": 10000,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "manual": {
      -            "type": "boolean"
      -          },
      -          "missionPackId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "playerCount": {
      -            "anyOf": [
      -              {
      -                "const": 2,
      -                "type": "number"
      -              },
      -              {
      -                "const": 3,
      -                "type": "number"
      -              },
      -              {
      -                "const": 4,
      -                "type": "number"
      -              }
      -            ]
      -          },
      -          "teamBattle": {
      -            "type": "boolean"
      -          },
      -          "terrainLayoutId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "twistId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "limit",
      -          "missionPackId",
      -          "terrainLayoutId",
      -          "twistId",
      -          "clockLimitMinutes"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reset-setup",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "detach-roster",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "dispositions": {
      -            "items": {
      -              "properties": {
      -                "disposition": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "side": {
      -                  "maximum": 1,
      -                  "minimum": 0,
      -                  "type": "integer"
      -                }
      -              },
      -              "required": [
      -                "side",
      -                "disposition"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 2,
      -            "type": "array"
      -          },
      -          "eventToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "lock-league-rosters",
      -            "type": "string"
      -          },
      -          "leagueToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "leagueToken"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-setup-step",
      -            "type": "string"
      -          },
      -          "step": {
      -            "maximum": 9,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "step"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-attacker",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "attackerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-first-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "disposition": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-side-disposition",
      -            "type": "string"
      -          },
      -          "side": {
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "side",
      -          "disposition"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "attach-roster",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "prep": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "primary": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "awards": {
      -                            "items": {
      -                              "properties": {
      -                                "criteria": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 2000,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "cumulative": {
      -                                  "type": "boolean"
      -                                },
      -                                "group": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 100,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "max": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maximum": 100,
      -                                      "minimum": 0,
      -                                      "type": "integer"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "mode": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 40,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "per": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 200,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "trigger": {
      -                                  "properties": {
      -                                    "phase": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "playerTurn": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMax": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMin": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "timing": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    }
      -                                  },
      -                                  "required": [
      -                                    "timing",
      -                                    "phase",
      -                                    "playerTurn",
      -                                    "roundMin",
      -                                    "roundMax"
      -                                  ],
      -                                  "type": "object"
      -                                },
      -                                "vp": {
      -                                  "maximum": 100,
      -                                  "minimum": 0,
      -                                  "type": "integer"
      -                                }
      -                              },
      -                              "required": [
      -                                "vp",
      -                                "per",
      -                                "mode",
      -                                "max",
      -                                "group",
      -                                "cumulative",
      -                                "criteria",
      -                                "trigger"
      -                              ],
      -                              "type": "object"
      -                            },
      -                            "maxItems": 20,
      -                            "type": "array"
      -                          },
      -                          "key": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "name": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "selection": {
      -                            "enum": [
      -                              "punishment",
      -                              "guards",
      -                              "tempting-target",
      -                              "beacon",
      -                              "locate-and-deny",
      -                              "sensor-sweep",
      -                              "consecrate"
      -                            ],
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "key",
      -                          "name"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "secondaries": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "selection": {
      -                          "enum": [
      -                            "punishment",
      -                            "guards",
      -                            "tempting-target",
      -                            "beacon",
      -                            "locate-and-deny",
      -                            "sensor-sweep",
      -                            "consecrate"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 6,
      -                    "type": "array"
      -                  },
      -                  "secondaryDeck": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "selection": {
      -                          "enum": [
      -                            "punishment",
      -                            "guards",
      -                            "tempting-target",
      -                            "beacon",
      -                            "locate-and-deny",
      -                            "sensor-sweep",
      -                            "consecrate"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 60,
      -                    "type": "array"
      -                  },
      -                  "secondaryMode": {
      -                    "enum": [
      -                      "tactical",
      -                      "fixed"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "stratagems": {
      -                    "items": {
      -                      "properties": {
      -                        "cp": {
      -                          "maximum": 6,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "detachment": {
      -                          "maxLength": 249,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "limit": {
      -                          "enum": [
      -                            "phase",
      -                            "turn",
      -                            "battle-round",
      -                            "battle",
      -                            "unlimited"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "phases": {
      -                          "items": {
      -                            "enum": [
      -                              "command",
      -                              "movement",
      -                              "shooting",
      -                              "charge",
      -                              "fight",
      -                              "end"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 6,
      -                          "type": "array"
      -                        },
      -                        "turn": {
      -                          "enum": [
      -                            "your-turn",
      -                            "opponent-turn",
      -                            "either"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "cp",
      -                        "limit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 48,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "stratagems",
      -                  "secondaries",
      -                  "primary",
      -                  "secondaryMode"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "roster": {
      -            "properties": {
      -              "built": {
      -                "properties": {
      -                  "catalogueId": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "detachment": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 80,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachmentIds": {
      -                    "items": {
      -                      "maxLength": 128,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "detachmentPointBudget": {
      -                    "anyOf": [
      -                      {
      -                        "maximum": 3,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachments": {
      -                    "items": {
      -                      "properties": {
      -                        "name": {
      -                          "maxLength": 80,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 3,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "name",
      -                        "points"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "disposition": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 64,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "dispositions": {
      -                    "items": {
      -                      "maxLength": 64,
      -                      "type": "string"
      -                    },
      -                    "maxItems": 16,
      -                    "type": "array"
      -                  },
      -                  "edition": {
      -                    "properties": {
      -                      "description": {
      -                        "maxLength": 240,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "id": {
      -                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "slug": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      -                        "type": "string"
      -                      },
      -                      "status": {
      -                        "enum": [
      -                          "preview",
      -                          "released",
      -                          "retired"
      -                        ],
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "id",
      -                      "name",
      -                      "status"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "limit": {
      -                    "maximum": 10000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "picks": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "catalogueId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "choices": {
      -                          "additionalProperties": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 60,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        },
      -                        "note": {
      -                          "maxLength": 500,
      -                          "type": "string"
      -                        },
      -                        "spreads": {
      -                          "additionalProperties": {
      -                            "additionalProperties": {
      -                              "maximum": 60,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            "propertyNames": {
      -                              "maxLength": 64,
      -                              "type": "string"
      -                            },
      -                            "type": "object"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "toggles": {
      -                          "additionalProperties": {
      -                            "maximum": 1,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "entryId"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 100,
      -                    "type": "array"
      -                  },
      -                  "pointsBudget": {
      -                    "maximum": 10000,
      -                    "minimum": 500,
      -                    "type": "integer"
      -                  },
      -                  "revision": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "strategicReserveLimit": {
      -                    "maximum": 5000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "enhancements": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "formationOptions": {
      -                          "items": {
      -                            "enum": [
      -                              "battlefield",
      -                              "strategic-reserves",
      -                              "deep-strike",
      -                              "embarked"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 4,
      -                          "type": "array"
      -                        },
      -                        "group": {
      -                          "enum": [
      -                            "epic-hero",
      -                            "character",
      -                            "battleline",
      -                            "infantry",
      -                            "swarm",
      -                            "mounted",
      -                            "beast",
      -                            "monster",
      -                            "vehicle",
      -                            "drone",
      -                            "transport",
      -                            "fortification",
      -                            "other"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "joined": {
      -                          "items": {
      -                            "properties": {
      -                              "label": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "label",
      -                              "name"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "keywords": {
      -                          "items": {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 60,
      -                          "type": "array"
      -                        },
      -                        "models": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "note": {
      -                          "maxLength": 500,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "maximum": 10000,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "prebattleRules": {
      -                          "items": {
      -                            "enum": [
      -                              "infiltrators",
      -                              "scouts"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 2,
      -                          "type": "array"
      -                        },
      -                        "strategicReserveExempt": {
      -                          "type": "boolean"
      -                        },
      -                        "transport": {
      -                          "type": "boolean"
      -                        },
      -                        "transportRule": {
      -                          "maxLength": 4000,
      -                          "type": "string"
      -                        },
      -                        "upgrades": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "wargear": {
      -                          "items": {
      -                            "properties": {
      -                              "count": {
      -                                "maximum": 100,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "name",
      -                              "count"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 200,
      -                          "type": "array"
      -                        },
      -                        "warlord": {
      -                          "type": "boolean"
      -                        },
      -                        "warlordEligible": {
      -                          "type": "boolean"
      -                        },
      -                        "wounds": {
      -                          "maximum": 100,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "points",
      -                        "models"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 200,
      -                    "type": "array"
      -                  },
      -                  "waivedRules": {
      -                    "items": {
      -                      "enum": [
      -                        "points-limit",
      -                        "detachments",
      -                        "detachment-points",
      -                        "kotc-infantry",
      -                        "kotc-warlord",
      -                        "kotc-epic-heroes",
      -                        "kotc-toughness",
      -                        "kotc-datasheet-copies"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "maxItems": 8,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "catalogueId",
      -                  "revision",
      -                  "limit",
      -                  "detachment",
      -                  "disposition",
      -                  "units"
      -                ],
      -                "type": "object"
      -              },
      -              "id": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "lentBy": {
      -                "properties": {
      -                  "id": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "name": {
      -                    "maxLength": 48,
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "id",
      -                  "name"
      -                ],
      -                "type": "object"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "type": "string"
      -              },
      -              "reminders": {
      -                "items": {
      -                  "properties": {
      -                    "ability": {
      -                      "maxLength": 80,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "description": {
      -                      "maxLength": 10000,
      -                      "type": "string"
      -                    },
      -                    "key": {
      -                      "maxLength": 240,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "timings": {
      -                      "items": {
      -                        "oneOf": [
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "phase-start",
      -                                  "phase-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "enum": [
      -                                  "command",
      -                                  "movement",
      -                                  "shooting",
      -                                  "charge",
      -                                  "fight",
      -                                  "any"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "turn-start",
      -                                  "turn-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "round-start",
      -                                  "round-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "const": "either",
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          }
      -                        ]
      -                      },
      -                      "maxItems": 10,
      -                      "minItems": 1,
      -                      "type": "array"
      -                    },
      -                    "unit": {
      -                      "properties": {
      -                        "index": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "index",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "whileDestroyed": {
      -                      "type": "boolean"
      -                    }
      -                  },
      -                  "required": [
      -                    "key",
      -                    "ability",
      -                    "description",
      -                    "timings"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 100,
      -                "type": "array"
      -              },
      -              "remindersEnabled": {
      -                "type": "boolean"
      -              },
      -              "text": {
      -                "maxLength": 20000,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "name",
      -              "text"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "roster"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "destroyed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "set-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "destroyed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-prep",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "primary": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "awards": {
      -                    "items": {
      -                      "properties": {
      -                        "criteria": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 2000,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "cumulative": {
      -                          "type": "boolean"
      -                        },
      -                        "group": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 100,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "max": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 100,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "mode": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 40,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "per": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 200,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "trigger": {
      -                          "properties": {
      -                            "phase": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "playerTurn": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMax": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMin": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "timing": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            }
      -                          },
      -                          "required": [
      -                            "timing",
      -                            "phase",
      -                            "playerTurn",
      -                            "roundMin",
      -                            "roundMax"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "vp": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "vp",
      -                        "per",
      -                        "mode",
      -                        "max",
      -                        "group",
      -                        "cumulative",
      -                        "criteria",
      -                        "trigger"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "key": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "name": {
      -                    "maxLength": 80,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "selection": {
      -                    "enum": [
      -                      "punishment",
      -                      "guards",
      -                      "tempting-target",
      -                      "beacon",
      -                      "locate-and-deny",
      -                      "sensor-sweep",
      -                      "consecrate"
      -                    ],
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "key",
      -                  "name"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon",
      -                    "locate-and-deny",
      -                    "sensor-sweep",
      -                    "consecrate"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 6,
      -            "type": "array"
      -          },
      -          "secondaryDeck": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon",
      -                    "locate-and-deny",
      -                    "sensor-sweep",
      -                    "consecrate"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 60,
      -            "type": "array"
      -          },
      -          "secondaryMode": {
      -            "enum": [
      -              "tactical",
      -              "fixed"
      -            ],
      -            "type": "string"
      -          },
      -          "stratagems": {
      -            "items": {
      -              "properties": {
      -                "cp": {
      -                  "maximum": 6,
      -                  "minimum": 0,
      -                  "type": "integer"
      -                },
      -                "detachment": {
      -                  "maxLength": 249,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "limit": {
      -                  "enum": [
      -                    "phase",
      -                    "turn",
      -                    "battle-round",
      -                    "battle",
      -                    "unlimited"
      -                  ],
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "phases": {
      -                  "items": {
      -                    "enum": [
      -                      "command",
      -                      "movement",
      -                      "shooting",
      -                      "charge",
      -                      "fight",
      -                      "end"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "maxItems": 6,
      -                  "type": "array"
      -                },
      -                "turn": {
      -                  "enum": [
      -                    "your-turn",
      -                    "opponent-turn",
      -                    "either"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name",
      -                "cp",
      -                "limit"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 48,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagems",
      -          "secondaries",
      -          "primary",
      -          "secondaryMode"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "deployed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "deploy-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "deployed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "formation": {
      -            "enum": [
      -              "battlefield",
      -              "strategic-reserves",
      -              "deep-strike",
      -              "embarked"
      -            ],
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-unit-formation",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "transportKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "formation"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-painted",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "painted"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "wound-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "damage-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-deployment",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-battlefield",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "terrainLayoutId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId",
      -          "terrainLayoutId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "use-stratagem",
      -            "type": "string"
      -          },
      -          "missed": {
      -            "properties": {
      -              "phase": {
      -                "enum": [
      -                  "command",
      -                  "movement",
      -                  "shooting",
      -                  "charge",
      -                  "fight",
      -                  "end"
      -                ],
      -                "type": "string"
      -              },
      -              "round": {
      -                "maximum": 5,
      -                "minimum": 1,
      -                "type": "integer"
      -              },
      -              "turn": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "round",
      -              "phase",
      -              "turn"
      -            ],
      -            "type": "object"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "use-new-orders",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon",
      -                  "locate-and-deny",
      -                  "sensor-sweep",
      -                  "consecrate"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          },
      -          "secondaryKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "stratagemKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagemKey",
      -          "secondaryKey",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "score-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "score-settlement",
      -            "type": "string"
      -          },
      -          "missed": {
      -            "properties": {
      -              "phase": {
      -                "enum": [
      -                  "command",
      -                  "movement",
      -                  "shooting",
      -                  "charge",
      -                  "fight",
      -                  "end"
      -                ],
      -                "type": "string"
      -              },
      -              "round": {
      -                "maximum": 5,
      -                "minimum": 1,
      -                "type": "integer"
      -              },
      -              "turn": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "round",
      -              "phase",
      -              "turn"
      -            ],
      -            "type": "object"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "round": {
      -            "maximum": 5,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "scores": {
      -            "items": {
      -              "oneOf": [
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "primary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "final": {
      -                      "properties": {
      -                        "claims": {
      -                          "items": {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "delta": {
      -                          "exclusiveMinimum": 0,
      -                          "maximum": 9007199254740991,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "claims",
      -                        "delta"
      -                      ],
      -                      "type": "object"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "secondary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "key": {
      -                      "maxLength": 64,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "status": {
      -                      "const": "achieved",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "key",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                }
      -              ]
      -            },
      -            "maxItems": 31,
      -            "minItems": 1,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "scores"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-secondary-status",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "status": {
      -            "enum": [
      -              "active",
      -              "achieved",
      -              "discarded",
      -              "returned"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "status"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon",
      -                  "locate-and-deny",
      -                  "sensor-sweep",
      -                  "consecrate"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondaries",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon",
      -                    "locate-and-deny",
      -                    "sensor-sweep",
      -                    "consecrate"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 2,
      -            "minItems": 1,
      -            "type": "array"
      -          },
      -          "selected": {
      -            "const": true,
      -            "type": "boolean"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondaries"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-draw",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-scoring",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "select-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon",
      -                  "locate-and-deny",
      -                  "sensor-sweep",
      -                  "consecrate"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reveal-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "begin-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "adjust-cp",
      -            "type": "string"
      -          },
      -          "missed": {
      -            "properties": {
      -              "phase": {
      -                "enum": [
      -                  "command",
      -                  "movement",
      -                  "shooting",
      -                  "charge",
      -                  "fight",
      -                  "end"
      -                ],
      -                "type": "string"
      -              },
      -              "round": {
      -                "maximum": 5,
      -                "minimum": 1,
      -                "type": "integer"
      -              },
      -              "turn": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "round",
      -              "phase",
      -              "turn"
      -            ],
      -            "type": "object"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "gainCp": {
      -            "type": "boolean"
      -          },
      -          "keys": {
      -            "items": {
      -              "maxLength": 64,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "kind": {
      -            "const": "resolve-tactical-hand",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "category": {
      -            "enum": [
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          },
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "score",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "category",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "correct-player",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "resource": {
      -            "enum": [
      -              "cp",
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "playerId",
      -          "resource",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "settle-opponent-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "request-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "cancel-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "pause-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "resume-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "concededBy": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "end-battle",
      -            "type": "string"
      -          },
      -          "reason": {
      -            "enum": [
      -              "completed",
      -              "finished-early",
      -              "conceded"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reopen-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "add-note",
      -            "type": "string"
      -          },
      -          "text": {
      -            "maxLength": 500,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "text"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "undo",
      -            "type": "string"
      -          },
      -          "target": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "target"
      -        ],
      -        "type": "object"
      -      }
      -    ]
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "attach-saved-roster",
      -        "type": "string"
      -      },
      -      "playerId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "rosterId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "rosterId"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "oneOf": [
      +      {
      +        "properties": {
      +          "cardKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "select-mission",
      +            "type": "string"
      +          },
      +          "occurrence": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "selection": {
      +            "oneOf": [
      +              {
      +                "properties": {
      +                  "fallback": {
      +                    "type": "boolean"
      +                  },
      +                  "kind": {
      +                    "const": "punishment",
      +                    "type": "string"
      +                  },
      +                  "qualified": {
      +                    "type": "boolean"
      +                  },
      +                  "unavailable": {
      +                    "const": true,
      +                    "type": "boolean"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "playerId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "rosterSeq": {
      +                          "exclusiveMinimum": 0,
      +                          "maximum": 9007199254740991,
      +                          "type": "integer"
      +                        },
      +                        "unitKey": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "playerId",
      +                        "unitKey",
      +                        "rosterSeq"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "units",
      +                  "fallback",
      +                  "qualified"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "guards": {
      +                    "items": {
      +                      "properties": {
      +                        "objective": {
      +                          "properties": {
      +                            "key": {
      +                              "maxLength": 128,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "name": {
      +                              "maxLength": 80,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "key",
      +                            "name"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "unit": {
      +                          "properties": {
      +                            "playerId": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "rosterSeq": {
      +                              "exclusiveMinimum": 0,
      +                              "maximum": 9007199254740991,
      +                              "type": "integer"
      +                            },
      +                            "unitKey": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "playerId",
      +                            "unitKey",
      +                            "rosterSeq"
      +                          ],
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "objective",
      +                        "unit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "guards",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "guards"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "kind": {
      +                    "const": "tempting-target",
      +                    "type": "string"
      +                  },
      +                  "noMansLand": {
      +                    "type": "boolean"
      +                  },
      +                  "notHome": {
      +                    "type": "boolean"
      +                  },
      +                  "objective": {
      +                    "properties": {
      +                      "key": {
      +                        "maxLength": 128,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "key",
      +                      "name"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "objective",
      +                  "notHome",
      +                  "noMansLand"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "kind": {
      +                    "const": "beacon",
      +                    "type": "string"
      +                  },
      +                  "note": {
      +                    "maxLength": 200,
      +                    "type": "string"
      +                  },
      +                  "unit": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "playerId": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "rosterSeq": {
      +                            "exclusiveMinimum": 0,
      +                            "maximum": 9007199254740991,
      +                            "type": "integer"
      +                          },
      +                          "unitKey": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "playerId",
      +                          "unitKey",
      +                          "rosterSeq"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "unit",
      +                  "note"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "allEligible": {
      +                    "type": "boolean"
      +                  },
      +                  "areas": {
      +                    "items": {
      +                      "properties": {
      +                        "key": {
      +                          "maxLength": 128,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 5,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "locate-and-deny",
      +                    "type": "string"
      +                  },
      +                  "outsideZone": {
      +                    "type": "boolean"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "areas",
      +                  "outsideZone",
      +                  "allEligible"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "controlled": {
      +                    "type": "boolean"
      +                  },
      +                  "kind": {
      +                    "const": "sensor-sweep",
      +                    "type": "string"
      +                  },
      +                  "marker": {
      +                    "properties": {
      +                      "key": {
      +                        "maxLength": 128,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "playerId": {
      +                        "maxLength": 64,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "key",
      +                      "name",
      +                      "playerId"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "marker",
      +                  "controlled"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "consecrations": {
      +                    "items": {
      +                      "properties": {
      +                        "objective": {
      +                          "properties": {
      +                            "key": {
      +                              "maxLength": 128,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "name": {
      +                              "maxLength": 80,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "key",
      +                            "name"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "unit": {
      +                          "properties": {
      +                            "playerId": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "rosterSeq": {
      +                              "exclusiveMinimum": 0,
      +                              "maximum": 9007199254740991,
      +                              "type": "integer"
      +                            },
      +                            "unitKey": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "playerId",
      +                            "unitKey",
      +                            "rosterSeq"
      +                          ],
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "objective",
      +                        "unit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "consecrate",
      +                    "type": "string"
      +                  },
      +                  "notHome": {
      +                    "type": "boolean"
      +                  },
      +                  "qualified": {
      +                    "type": "boolean"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "consecrations",
      +                  "qualified",
      +                  "notHome"
      +                ],
      +                "type": "object"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "cardKey",
      +          "occurrence",
      +          "selection"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "clockLimitMinutes": {
      +            "anyOf": [
      +              {
      +                "maximum": 300,
      +                "minimum": 5,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "kind": {
      +            "const": "configure-battle",
      +            "type": "string"
      +          },
      +          "limit": {
      +            "anyOf": [
      +              {
      +                "maximum": 10000,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "manual": {
      +            "type": "boolean"
      +          },
      +          "missionPackId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "playerCount": {
      +            "anyOf": [
      +              {
      +                "const": 2,
      +                "type": "number"
      +              },
      +              {
      +                "const": 3,
      +                "type": "number"
      +              },
      +              {
      +                "const": 4,
      +                "type": "number"
      +              }
      +            ]
      +          },
      +          "teamBattle": {
      +            "type": "boolean"
      +          },
      +          "terrainLayoutId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "twistId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "limit",
      +          "missionPackId",
      +          "terrainLayoutId",
      +          "twistId",
      +          "clockLimitMinutes"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reset-setup",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "detach-roster",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "dispositions": {
      +            "items": {
      +              "properties": {
      +                "disposition": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "side": {
      +                  "maximum": 1,
      +                  "minimum": 0,
      +                  "type": "integer"
      +                }
      +              },
      +              "required": [
      +                "side",
      +                "disposition"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 2,
      +            "type": "array"
      +          },
      +          "eventToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "lock-league-rosters",
      +            "type": "string"
      +          },
      +          "leagueToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "leagueToken"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-setup-step",
      +            "type": "string"
      +          },
      +          "step": {
      +            "maximum": 9,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "step"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-attacker",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "attackerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-first-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "disposition": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-side-disposition",
      +            "type": "string"
      +          },
      +          "side": {
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "side",
      +          "disposition"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "attach-roster",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "prep": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "primary": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "awards": {
      +                            "items": {
      +                              "properties": {
      +                                "criteria": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 2000,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "cumulative": {
      +                                  "type": "boolean"
      +                                },
      +                                "group": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 100,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "max": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maximum": 100,
      +                                      "minimum": 0,
      +                                      "type": "integer"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "mode": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 40,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "per": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 200,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "trigger": {
      +                                  "properties": {
      +                                    "phase": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "playerTurn": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMax": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMin": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "timing": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    }
      +                                  },
      +                                  "required": [
      +                                    "timing",
      +                                    "phase",
      +                                    "playerTurn",
      +                                    "roundMin",
      +                                    "roundMax"
      +                                  ],
      +                                  "type": "object"
      +                                },
      +                                "vp": {
      +                                  "maximum": 100,
      +                                  "minimum": 0,
      +                                  "type": "integer"
      +                                }
      +                              },
      +                              "required": [
      +                                "vp",
      +                                "per",
      +                                "mode",
      +                                "max",
      +                                "group",
      +                                "cumulative",
      +                                "criteria",
      +                                "trigger"
      +                              ],
      +                              "type": "object"
      +                            },
      +                            "maxItems": 20,
      +                            "type": "array"
      +                          },
      +                          "key": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "name": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "selection": {
      +                            "enum": [
      +                              "punishment",
      +                              "guards",
      +                              "tempting-target",
      +                              "beacon",
      +                              "locate-and-deny",
      +                              "sensor-sweep",
      +                              "consecrate"
      +                            ],
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "key",
      +                          "name"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "secondaries": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "selection": {
      +                          "enum": [
      +                            "punishment",
      +                            "guards",
      +                            "tempting-target",
      +                            "beacon",
      +                            "locate-and-deny",
      +                            "sensor-sweep",
      +                            "consecrate"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 6,
      +                    "type": "array"
      +                  },
      +                  "secondaryDeck": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "selection": {
      +                          "enum": [
      +                            "punishment",
      +                            "guards",
      +                            "tempting-target",
      +                            "beacon",
      +                            "locate-and-deny",
      +                            "sensor-sweep",
      +                            "consecrate"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 60,
      +                    "type": "array"
      +                  },
      +                  "secondaryMode": {
      +                    "enum": [
      +                      "tactical",
      +                      "fixed"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "stratagems": {
      +                    "items": {
      +                      "properties": {
      +                        "cp": {
      +                          "maximum": 6,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "detachment": {
      +                          "maxLength": 249,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "limit": {
      +                          "enum": [
      +                            "phase",
      +                            "turn",
      +                            "battle-round",
      +                            "battle",
      +                            "unlimited"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "phases": {
      +                          "items": {
      +                            "enum": [
      +                              "command",
      +                              "movement",
      +                              "shooting",
      +                              "charge",
      +                              "fight",
      +                              "end"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 6,
      +                          "type": "array"
      +                        },
      +                        "turn": {
      +                          "enum": [
      +                            "your-turn",
      +                            "opponent-turn",
      +                            "either"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "cp",
      +                        "limit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 48,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "stratagems",
      +                  "secondaries",
      +                  "primary",
      +                  "secondaryMode"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "roster": {
      +            "properties": {
      +              "built": {
      +                "properties": {
      +                  "catalogueId": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "detachment": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 80,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachmentIds": {
      +                    "items": {
      +                      "maxLength": 128,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "detachmentPointBudget": {
      +                    "anyOf": [
      +                      {
      +                        "maximum": 3,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachments": {
      +                    "items": {
      +                      "properties": {
      +                        "name": {
      +                          "maxLength": 80,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 3,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "name",
      +                        "points"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "disposition": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 64,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "dispositions": {
      +                    "items": {
      +                      "maxLength": 64,
      +                      "type": "string"
      +                    },
      +                    "maxItems": 16,
      +                    "type": "array"
      +                  },
      +                  "edition": {
      +                    "properties": {
      +                      "description": {
      +                        "maxLength": 240,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "id": {
      +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "slug": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      +                        "type": "string"
      +                      },
      +                      "status": {
      +                        "enum": [
      +                          "preview",
      +                          "released",
      +                          "retired"
      +                        ],
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "id",
      +                      "name",
      +                      "status"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "limit": {
      +                    "maximum": 10000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "picks": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "catalogueId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "choices": {
      +                          "additionalProperties": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 60,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        },
      +                        "note": {
      +                          "maxLength": 500,
      +                          "type": "string"
      +                        },
      +                        "spreads": {
      +                          "additionalProperties": {
      +                            "additionalProperties": {
      +                              "maximum": 60,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            "propertyNames": {
      +                              "maxLength": 64,
      +                              "type": "string"
      +                            },
      +                            "type": "object"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "toggles": {
      +                          "additionalProperties": {
      +                            "maximum": 1,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "entryId"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 100,
      +                    "type": "array"
      +                  },
      +                  "pointsBudget": {
      +                    "maximum": 10000,
      +                    "minimum": 500,
      +                    "type": "integer"
      +                  },
      +                  "revision": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "strategicReserveLimit": {
      +                    "maximum": 5000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "enhancements": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "formationOptions": {
      +                          "items": {
      +                            "enum": [
      +                              "battlefield",
      +                              "strategic-reserves",
      +                              "deep-strike",
      +                              "embarked"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 4,
      +                          "type": "array"
      +                        },
      +                        "group": {
      +                          "enum": [
      +                            "epic-hero",
      +                            "character",
      +                            "battleline",
      +                            "infantry",
      +                            "swarm",
      +                            "mounted",
      +                            "beast",
      +                            "monster",
      +                            "vehicle",
      +                            "drone",
      +                            "transport",
      +                            "fortification",
      +                            "other"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "joined": {
      +                          "items": {
      +                            "properties": {
      +                              "label": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "label",
      +                              "name"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "keywords": {
      +                          "items": {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 60,
      +                          "type": "array"
      +                        },
      +                        "models": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "note": {
      +                          "maxLength": 500,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "maximum": 10000,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "prebattleRules": {
      +                          "items": {
      +                            "enum": [
      +                              "infiltrators",
      +                              "scouts"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 2,
      +                          "type": "array"
      +                        },
      +                        "strategicReserveExempt": {
      +                          "type": "boolean"
      +                        },
      +                        "transport": {
      +                          "type": "boolean"
      +                        },
      +                        "transportCapacity": {
      +                          "properties": {
      +                            "alternatives": {
      +                              "items": {
      +                                "maxLength": 200,
      +                                "type": "string"
      +                              },
      +                              "maxItems": 20,
      +                              "type": "array"
      +                            },
      +                            "conditions": {
      +                              "items": {
      +                                "properties": {
      +                                  "capacity": {
      +                                    "exclusiveMinimum": 0,
      +                                    "maximum": 1000,
      +                                    "type": "integer"
      +                                  },
      +                                  "carries": {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  "maxWounds": {
      +                                    "exclusiveMinimum": 0,
      +                                    "maximum": 1000,
      +                                    "type": "integer"
      +                                  },
      +                                  "wargear": {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  }
      +                                },
      +                                "required": [
      +                                  "capacity",
      +                                  "carries",
      +                                  "wargear"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "maxItems": 20,
      +                              "type": "array"
      +                            },
      +                            "excluded": {
      +                              "items": {
      +                                "properties": {
      +                                  "except": {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  "keywords": {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  }
      +                                },
      +                                "required": [
      +                                  "keywords"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "maxItems": 20,
      +                              "type": "array"
      +                            },
      +                            "instead": {
      +                              "anyOf": [
      +                                {
      +                                  "properties": {
      +                                    "capacity": {
      +                                      "exclusiveMinimum": 0,
      +                                      "maximum": 1000,
      +                                      "type": "integer"
      +                                    },
      +                                    "carries": {
      +                                      "maxLength": 200,
      +                                      "type": "string"
      +                                    },
      +                                    "maxWounds": {
      +                                      "exclusiveMinimum": 0,
      +                                      "maximum": 1000,
      +                                      "type": "integer"
      +                                    }
      +                                  },
      +                                  "required": [
      +                                    "capacity",
      +                                    "carries"
      +                                  ],
      +                                  "type": "object"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "main": {
      +                              "properties": {
      +                                "capacity": {
      +                                  "exclusiveMinimum": 0,
      +                                  "maximum": 1000,
      +                                  "type": "integer"
      +                                },
      +                                "carries": {
      +                                  "maxLength": 200,
      +                                  "type": "string"
      +                                },
      +                                "maxWounds": {
      +                                  "exclusiveMinimum": 0,
      +                                  "maximum": 1000,
      +                                  "type": "integer"
      +                                }
      +                              },
      +                              "required": [
      +                                "capacity",
      +                                "carries"
      +                              ],
      +                              "type": "object"
      +                            },
      +                            "pools": {
      +                              "items": {
      +                                "properties": {
      +                                  "capacity": {
      +                                    "exclusiveMinimum": 0,
      +                                    "maximum": 1000,
      +                                    "type": "integer"
      +                                  },
      +                                  "carries": {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  "maxWounds": {
      +                                    "exclusiveMinimum": 0,
      +                                    "maximum": 1000,
      +                                    "type": "integer"
      +                                  }
      +                                },
      +                                "required": [
      +                                  "capacity",
      +                                  "carries"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "maxItems": 20,
      +                              "type": "array"
      +                            },
      +                            "space": {
      +                              "items": {
      +                                "properties": {
      +                                  "keywords": {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  "moreWoundsThan": {
      +                                    "maximum": 1000,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  "size": {
      +                                    "exclusiveMinimum": 0,
      +                                    "maximum": 1000,
      +                                    "type": "integer"
      +                                  }
      +                                },
      +                                "required": [
      +                                  "size"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "maxItems": 20,
      +                              "type": "array"
      +                            }
      +                          },
      +                          "required": [
      +                            "main",
      +                            "instead",
      +                            "conditions",
      +                            "pools",
      +                            "alternatives",
      +                            "excluded",
      +                            "space"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "transportRule": {
      +                          "maxLength": 4000,
      +                          "type": "string"
      +                        },
      +                        "upgrades": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "wargear": {
      +                          "items": {
      +                            "properties": {
      +                              "count": {
      +                                "maximum": 100,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "name",
      +                              "count"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 200,
      +                          "type": "array"
      +                        },
      +                        "warlord": {
      +                          "type": "boolean"
      +                        },
      +                        "warlordEligible": {
      +                          "type": "boolean"
      +                        },
      +                        "wounds": {
      +                          "maximum": 100,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "points",
      +                        "models"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 200,
      +                    "type": "array"
      +                  },
      +                  "waivedRules": {
      +                    "items": {
      +                      "enum": [
      +                        "points-limit",
      +                        "detachments",
      +                        "detachment-points",
      +                        "kotc-infantry",
      +                        "kotc-warlord",
      +                        "kotc-epic-heroes",
      +                        "kotc-toughness",
      +                        "kotc-datasheet-copies"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "maxItems": 8,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "catalogueId",
      +                  "revision",
      +                  "limit",
      +                  "detachment",
      +                  "disposition",
      +                  "units"
      +                ],
      +                "type": "object"
      +              },
      +              "id": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "lentBy": {
      +                "properties": {
      +                  "id": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "maxLength": 48,
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "id",
      +                  "name"
      +                ],
      +                "type": "object"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "type": "string"
      +              },
      +              "reminders": {
      +                "items": {
      +                  "properties": {
      +                    "ability": {
      +                      "maxLength": 80,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "description": {
      +                      "maxLength": 10000,
      +                      "type": "string"
      +                    },
      +                    "key": {
      +                      "maxLength": 240,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "timings": {
      +                      "items": {
      +                        "oneOf": [
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "phase-start",
      +                                  "phase-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "enum": [
      +                                  "command",
      +                                  "movement",
      +                                  "shooting",
      +                                  "charge",
      +                                  "fight",
      +                                  "any"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "turn-start",
      +                                  "turn-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "round-start",
      +                                  "round-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "const": "either",
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          }
      +                        ]
      +                      },
      +                      "maxItems": 10,
      +                      "minItems": 1,
      +                      "type": "array"
      +                    },
      +                    "unit": {
      +                      "properties": {
      +                        "index": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "index",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "whileDestroyed": {
      +                      "type": "boolean"
      +                    }
      +                  },
      +                  "required": [
      +                    "key",
      +                    "ability",
      +                    "description",
      +                    "timings"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 100,
      +                "type": "array"
      +              },
      +              "remindersEnabled": {
      +                "type": "boolean"
      +              },
      +              "text": {
      +                "maxLength": 20000,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "text"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "roster"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "destroyed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "set-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "destroyed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-prep",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "primary": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "awards": {
      +                    "items": {
      +                      "properties": {
      +                        "criteria": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 2000,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "cumulative": {
      +                          "type": "boolean"
      +                        },
      +                        "group": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 100,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "max": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 100,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "mode": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 40,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "per": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 200,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "trigger": {
      +                          "properties": {
      +                            "phase": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "playerTurn": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMax": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMin": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "timing": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            }
      +                          },
      +                          "required": [
      +                            "timing",
      +                            "phase",
      +                            "playerTurn",
      +                            "roundMin",
      +                            "roundMax"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "vp": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "vp",
      +                        "per",
      +                        "mode",
      +                        "max",
      +                        "group",
      +                        "cumulative",
      +                        "criteria",
      +                        "trigger"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "key": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "maxLength": 80,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "selection": {
      +                    "enum": [
      +                      "punishment",
      +                      "guards",
      +                      "tempting-target",
      +                      "beacon",
      +                      "locate-and-deny",
      +                      "sensor-sweep",
      +                      "consecrate"
      +                    ],
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "key",
      +                  "name"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 6,
      +            "type": "array"
      +          },
      +          "secondaryDeck": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 60,
      +            "type": "array"
      +          },
      +          "secondaryMode": {
      +            "enum": [
      +              "tactical",
      +              "fixed"
      +            ],
      +            "type": "string"
      +          },
      +          "stratagems": {
      +            "items": {
      +              "properties": {
      +                "cp": {
      +                  "maximum": 6,
      +                  "minimum": 0,
      +                  "type": "integer"
      +                },
      +                "detachment": {
      +                  "maxLength": 249,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "limit": {
      +                  "enum": [
      +                    "phase",
      +                    "turn",
      +                    "battle-round",
      +                    "battle",
      +                    "unlimited"
      +                  ],
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "phases": {
      +                  "items": {
      +                    "enum": [
      +                      "command",
      +                      "movement",
      +                      "shooting",
      +                      "charge",
      +                      "fight",
      +                      "end"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "maxItems": 6,
      +                  "type": "array"
      +                },
      +                "turn": {
      +                  "enum": [
      +                    "your-turn",
      +                    "opponent-turn",
      +                    "either"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name",
      +                "cp",
      +                "limit"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 48,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagems",
      +          "secondaries",
      +          "primary",
      +          "secondaryMode"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "deployed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "deploy-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "deployed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "formation": {
      +            "enum": [
      +              "battlefield",
      +              "strategic-reserves",
      +              "deep-strike",
      +              "embarked"
      +            ],
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-unit-formation",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "transportKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "formation"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-painted",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "painted"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "wound-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "damage-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-deployment",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-battlefield",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "terrainLayoutId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId",
      +          "terrainLayoutId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "use-stratagem",
      +            "type": "string"
      +          },
      +          "missed": {
      +            "properties": {
      +              "phase": {
      +                "enum": [
      +                  "command",
      +                  "movement",
      +                  "shooting",
      +                  "charge",
      +                  "fight",
      +                  "end"
      +                ],
      +                "type": "string"
      +              },
      +              "round": {
      +                "maximum": 5,
      +                "minimum": 1,
      +                "type": "integer"
      +              },
      +              "turn": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "round",
      +              "phase",
      +              "turn"
      +            ],
      +            "type": "object"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "use-new-orders",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          },
      +          "secondaryKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "stratagemKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagemKey",
      +          "secondaryKey",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "score-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "score-settlement",
      +            "type": "string"
      +          },
      +          "missed": {
      +            "properties": {
      +              "phase": {
      +                "enum": [
      +                  "command",
      +                  "movement",
      +                  "shooting",
      +                  "charge",
      +                  "fight",
      +                  "end"
      +                ],
      +                "type": "string"
      +              },
      +              "round": {
      +                "maximum": 5,
      +                "minimum": 1,
      +                "type": "integer"
      +              },
      +              "turn": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "round",
      +              "phase",
      +              "turn"
      +            ],
      +            "type": "object"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "round": {
      +            "maximum": 5,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "scores": {
      +            "items": {
      +              "oneOf": [
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "primary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "final": {
      +                      "properties": {
      +                        "claims": {
      +                          "items": {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "delta": {
      +                          "exclusiveMinimum": 0,
      +                          "maximum": 9007199254740991,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "claims",
      +                        "delta"
      +                      ],
      +                      "type": "object"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "secondary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "key": {
      +                      "maxLength": 64,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "status": {
      +                      "const": "achieved",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "key",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                }
      +              ]
      +            },
      +            "maxItems": 31,
      +            "minItems": 1,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "scores"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-secondary-status",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "status": {
      +            "enum": [
      +              "active",
      +              "achieved",
      +              "discarded",
      +              "returned"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondaries",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 2,
      +            "minItems": 1,
      +            "type": "array"
      +          },
      +          "selected": {
      +            "const": true,
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondaries"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-draw",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-scoring",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "select-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reveal-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "begin-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "adjust-cp",
      +            "type": "string"
      +          },
      +          "missed": {
      +            "properties": {
      +              "phase": {
      +                "enum": [
      +                  "command",
      +                  "movement",
      +                  "shooting",
      +                  "charge",
      +                  "fight",
      +                  "end"
      +                ],
      +                "type": "string"
      +              },
      +              "round": {
      +                "maximum": 5,
      +                "minimum": 1,
      +                "type": "integer"
      +              },
      +              "turn": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "round",
      +              "phase",
      +              "turn"
      +            ],
      +            "type": "object"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "gainCp": {
      +            "type": "boolean"
      +          },
      +          "keys": {
      +            "items": {
      +              "maxLength": 64,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "kind": {
      +            "const": "resolve-tactical-hand",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "category": {
      +            "enum": [
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          },
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "score",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "category",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "correct-player",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "resource": {
      +            "enum": [
      +              "cp",
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "playerId",
      +          "resource",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "settle-opponent-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "request-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "cancel-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "pause-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "resume-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "concededBy": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "end-battle",
      +            "type": "string"
      +          },
      +          "reason": {
      +            "enum": [
      +              "completed",
      +              "finished-early",
      +              "conceded"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reopen-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "add-note",
      +            "type": "string"
      +          },
      +          "text": {
      +            "maxLength": 500,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "text"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "undo",
      +            "type": "string"
      +          },
      +          "target": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "target"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "attach-saved-roster",
      +        "type": "string"
      +      },
      +      "playerId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "rosterId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "rosterId"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. Changed1 schema field changed
    • changedInput schema / properties / command / anyOf
      Previous value: -[
      -  {
      -    "oneOf": [
      -      {
      -        "properties": {
      -          "cardKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "select-mission",
      -            "type": "string"
      -          },
      -          "occurrence": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "selection": {
      -            "oneOf": [
      -              {
      -                "properties": {
      -                  "fallback": {
      -                    "type": "boolean"
      -                  },
      -                  "kind": {
      -                    "const": "punishment",
      -                    "type": "string"
      -                  },
      -                  "qualified": {
      -                    "type": "boolean"
      -                  },
      -                  "unavailable": {
      -                    "const": true,
      -                    "type": "boolean"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "playerId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "rosterSeq": {
      -                          "exclusiveMinimum": 0,
      -                          "maximum": 9007199254740991,
      -                          "type": "integer"
      -                        },
      -                        "unitKey": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "playerId",
      -                        "unitKey",
      -                        "rosterSeq"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "units",
      -                  "fallback",
      -                  "qualified"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "guards": {
      -                    "items": {
      -                      "properties": {
      -                        "objective": {
      -                          "properties": {
      -                            "key": {
      -                              "maxLength": 128,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "name": {
      -                              "maxLength": 80,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "key",
      -                            "name"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "unit": {
      -                          "properties": {
      -                            "playerId": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "rosterSeq": {
      -                              "exclusiveMinimum": 0,
      -                              "maximum": 9007199254740991,
      -                              "type": "integer"
      -                            },
      -                            "unitKey": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "playerId",
      -                            "unitKey",
      -                            "rosterSeq"
      -                          ],
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "objective",
      -                        "unit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "guards",
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "guards"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "kind": {
      -                    "const": "tempting-target",
      -                    "type": "string"
      -                  },
      -                  "noMansLand": {
      -                    "type": "boolean"
      -                  },
      -                  "notHome": {
      -                    "type": "boolean"
      -                  },
      -                  "objective": {
      -                    "properties": {
      -                      "key": {
      -                        "maxLength": 128,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "key",
      -                      "name"
      -                    ],
      -                    "type": "object"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "objective",
      -                  "notHome",
      -                  "noMansLand"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "kind": {
      -                    "const": "beacon",
      -                    "type": "string"
      -                  },
      -                  "note": {
      -                    "maxLength": 200,
      -                    "type": "string"
      -                  },
      -                  "unit": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "playerId": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "rosterSeq": {
      -                            "exclusiveMinimum": 0,
      -                            "maximum": 9007199254740991,
      -                            "type": "integer"
      -                          },
      -                          "unitKey": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "playerId",
      -                          "unitKey",
      -                          "rosterSeq"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "unit",
      -                  "note"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "allEligible": {
      -                    "type": "boolean"
      -                  },
      -                  "areas": {
      -                    "items": {
      -                      "properties": {
      -                        "key": {
      -                          "maxLength": 128,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 5,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "locate-and-deny",
      -                    "type": "string"
      -                  },
      -                  "outsideZone": {
      -                    "type": "boolean"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "areas",
      -                  "outsideZone",
      -                  "allEligible"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "controlled": {
      -                    "type": "boolean"
      -                  },
      -                  "kind": {
      -                    "const": "sensor-sweep",
      -                    "type": "string"
      -                  },
      -                  "marker": {
      -                    "properties": {
      -                      "key": {
      -                        "maxLength": 128,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "playerId": {
      -                        "maxLength": 64,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "key",
      -                      "name",
      -                      "playerId"
      -                    ],
      -                    "type": "object"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "marker",
      -                  "controlled"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "consecrations": {
      -                    "items": {
      -                      "properties": {
      -                        "objective": {
      -                          "properties": {
      -                            "key": {
      -                              "maxLength": 128,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "name": {
      -                              "maxLength": 80,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "key",
      -                            "name"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "unit": {
      -                          "properties": {
      -                            "playerId": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "rosterSeq": {
      -                              "exclusiveMinimum": 0,
      -                              "maximum": 9007199254740991,
      -                              "type": "integer"
      -                            },
      -                            "unitKey": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "playerId",
      -                            "unitKey",
      -                            "rosterSeq"
      -                          ],
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "objective",
      -                        "unit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "consecrate",
      -                    "type": "string"
      -                  },
      -                  "notHome": {
      -                    "type": "boolean"
      -                  },
      -                  "qualified": {
      -                    "type": "boolean"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "consecrations",
      -                  "qualified",
      -                  "notHome"
      -                ],
      -                "type": "object"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "cardKey",
      -          "occurrence",
      -          "selection"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "clockLimitMinutes": {
      -            "anyOf": [
      -              {
      -                "maximum": 300,
      -                "minimum": 5,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "kind": {
      -            "const": "configure-battle",
      -            "type": "string"
      -          },
      -          "limit": {
      -            "anyOf": [
      -              {
      -                "maximum": 10000,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "manual": {
      -            "type": "boolean"
      -          },
      -          "missionPackId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "playerCount": {
      -            "anyOf": [
      -              {
      -                "const": 2,
      -                "type": "number"
      -              },
      -              {
      -                "const": 3,
      -                "type": "number"
      -              },
      -              {
      -                "const": 4,
      -                "type": "number"
      -              }
      -            ]
      -          },
      -          "teamBattle": {
      -            "type": "boolean"
      -          },
      -          "terrainLayoutId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "twistId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "limit",
      -          "missionPackId",
      -          "terrainLayoutId",
      -          "twistId",
      -          "clockLimitMinutes"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reset-setup",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "detach-roster",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "dispositions": {
      -            "items": {
      -              "properties": {
      -                "disposition": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "side": {
      -                  "maximum": 1,
      -                  "minimum": 0,
      -                  "type": "integer"
      -                }
      -              },
      -              "required": [
      -                "side",
      -                "disposition"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 2,
      -            "type": "array"
      -          },
      -          "eventToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "lock-league-rosters",
      -            "type": "string"
      -          },
      -          "leagueToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "leagueToken"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-setup-step",
      -            "type": "string"
      -          },
      -          "step": {
      -            "maximum": 9,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "step"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-attacker",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "attackerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-first-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "disposition": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-side-disposition",
      -            "type": "string"
      -          },
      -          "side": {
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "side",
      -          "disposition"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "attach-roster",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "prep": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "primary": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "awards": {
      -                            "items": {
      -                              "properties": {
      -                                "criteria": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 2000,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "cumulative": {
      -                                  "type": "boolean"
      -                                },
      -                                "group": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 100,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "max": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maximum": 100,
      -                                      "minimum": 0,
      -                                      "type": "integer"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "mode": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 40,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "per": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 200,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "trigger": {
      -                                  "properties": {
      -                                    "phase": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "playerTurn": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMax": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMin": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "timing": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    }
      -                                  },
      -                                  "required": [
      -                                    "timing",
      -                                    "phase",
      -                                    "playerTurn",
      -                                    "roundMin",
      -                                    "roundMax"
      -                                  ],
      -                                  "type": "object"
      -                                },
      -                                "vp": {
      -                                  "maximum": 100,
      -                                  "minimum": 0,
      -                                  "type": "integer"
      -                                }
      -                              },
      -                              "required": [
      -                                "vp",
      -                                "per",
      -                                "mode",
      -                                "max",
      -                                "group",
      -                                "cumulative",
      -                                "criteria",
      -                                "trigger"
      -                              ],
      -                              "type": "object"
      -                            },
      -                            "maxItems": 20,
      -                            "type": "array"
      -                          },
      -                          "key": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "name": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "selection": {
      -                            "enum": [
      -                              "punishment",
      -                              "guards",
      -                              "tempting-target",
      -                              "beacon",
      -                              "locate-and-deny",
      -                              "sensor-sweep",
      -                              "consecrate"
      -                            ],
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "key",
      -                          "name"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "secondaries": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "selection": {
      -                          "enum": [
      -                            "punishment",
      -                            "guards",
      -                            "tempting-target",
      -                            "beacon",
      -                            "locate-and-deny",
      -                            "sensor-sweep",
      -                            "consecrate"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 6,
      -                    "type": "array"
      -                  },
      -                  "secondaryDeck": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "selection": {
      -                          "enum": [
      -                            "punishment",
      -                            "guards",
      -                            "tempting-target",
      -                            "beacon",
      -                            "locate-and-deny",
      -                            "sensor-sweep",
      -                            "consecrate"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 60,
      -                    "type": "array"
      -                  },
      -                  "secondaryMode": {
      -                    "enum": [
      -                      "fixed",
      -                      "tactical"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "stratagems": {
      -                    "items": {
      -                      "properties": {
      -                        "cp": {
      -                          "maximum": 6,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "detachment": {
      -                          "maxLength": 249,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "limit": {
      -                          "enum": [
      -                            "phase",
      -                            "turn",
      -                            "battle-round",
      -                            "battle",
      -                            "unlimited"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "phases": {
      -                          "items": {
      -                            "enum": [
      -                              "command",
      -                              "movement",
      -                              "shooting",
      -                              "charge",
      -                              "fight",
      -                              "end"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 6,
      -                          "type": "array"
      -                        },
      -                        "turn": {
      -                          "enum": [
      -                            "your-turn",
      -                            "opponent-turn",
      -                            "either"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "cp",
      -                        "limit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 48,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "stratagems",
      -                  "secondaries",
      -                  "primary",
      -                  "secondaryMode"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "roster": {
      -            "properties": {
      -              "built": {
      -                "properties": {
      -                  "catalogueId": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "detachment": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 80,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachmentIds": {
      -                    "items": {
      -                      "maxLength": 128,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "detachmentPointBudget": {
      -                    "anyOf": [
      -                      {
      -                        "maximum": 3,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachments": {
      -                    "items": {
      -                      "properties": {
      -                        "name": {
      -                          "maxLength": 80,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 3,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "name",
      -                        "points"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "disposition": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 64,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "dispositions": {
      -                    "items": {
      -                      "maxLength": 64,
      -                      "type": "string"
      -                    },
      -                    "maxItems": 16,
      -                    "type": "array"
      -                  },
      -                  "edition": {
      -                    "properties": {
      -                      "description": {
      -                        "maxLength": 240,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "id": {
      -                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "slug": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      -                        "type": "string"
      -                      },
      -                      "status": {
      -                        "enum": [
      -                          "preview",
      -                          "released",
      -                          "retired"
      -                        ],
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "id",
      -                      "name",
      -                      "status"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "limit": {
      -                    "maximum": 10000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "picks": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "catalogueId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "choices": {
      -                          "additionalProperties": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 60,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        },
      -                        "note": {
      -                          "maxLength": 500,
      -                          "type": "string"
      -                        },
      -                        "spreads": {
      -                          "additionalProperties": {
      -                            "additionalProperties": {
      -                              "maximum": 60,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            "propertyNames": {
      -                              "maxLength": 64,
      -                              "type": "string"
      -                            },
      -                            "type": "object"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "toggles": {
      -                          "additionalProperties": {
      -                            "maximum": 1,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "entryId"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 100,
      -                    "type": "array"
      -                  },
      -                  "pointsBudget": {
      -                    "maximum": 10000,
      -                    "minimum": 500,
      -                    "type": "integer"
      -                  },
      -                  "revision": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "strategicReserveLimit": {
      -                    "maximum": 5000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "enhancements": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "formationOptions": {
      -                          "items": {
      -                            "enum": [
      -                              "battlefield",
      -                              "strategic-reserves",
      -                              "deep-strike",
      -                              "embarked"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 4,
      -                          "type": "array"
      -                        },
      -                        "group": {
      -                          "enum": [
      -                            "epic-hero",
      -                            "character",
      -                            "battleline",
      -                            "infantry",
      -                            "swarm",
      -                            "mounted",
      -                            "beast",
      -                            "monster",
      -                            "vehicle",
      -                            "drone",
      -                            "transport",
      -                            "fortification",
      -                            "other"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "joined": {
      -                          "items": {
      -                            "properties": {
      -                              "label": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "label",
      -                              "name"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "keywords": {
      -                          "items": {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 60,
      -                          "type": "array"
      -                        },
      -                        "models": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "note": {
      -                          "maxLength": 500,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "maximum": 10000,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "prebattleRules": {
      -                          "items": {
      -                            "enum": [
      -                              "infiltrators",
      -                              "scouts"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 2,
      -                          "type": "array"
      -                        },
      -                        "strategicReserveExempt": {
      -                          "type": "boolean"
      -                        },
      -                        "transport": {
      -                          "type": "boolean"
      -                        },
      -                        "transportRule": {
      -                          "maxLength": 4000,
      -                          "type": "string"
      -                        },
      -                        "upgrades": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "wargear": {
      -                          "items": {
      -                            "properties": {
      -                              "count": {
      -                                "maximum": 100,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "name",
      -                              "count"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 200,
      -                          "type": "array"
      -                        },
      -                        "warlord": {
      -                          "type": "boolean"
      -                        },
      -                        "warlordEligible": {
      -                          "type": "boolean"
      -                        },
      -                        "wounds": {
      -                          "maximum": 100,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "points",
      -                        "models"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 200,
      -                    "type": "array"
      -                  },
      -                  "waivedRules": {
      -                    "items": {
      -                      "enum": [
      -                        "points-limit",
      -                        "detachments",
      -                        "detachment-points",
      -                        "kotc-infantry",
      -                        "kotc-warlord",
      -                        "kotc-epic-heroes",
      -                        "kotc-toughness",
      -                        "kotc-datasheet-copies"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "maxItems": 8,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "catalogueId",
      -                  "revision",
      -                  "limit",
      -                  "detachment",
      -                  "disposition",
      -                  "units"
      -                ],
      -                "type": "object"
      -              },
      -              "id": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "lentBy": {
      -                "properties": {
      -                  "id": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "name": {
      -                    "maxLength": 48,
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "id",
      -                  "name"
      -                ],
      -                "type": "object"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "type": "string"
      -              },
      -              "reminders": {
      -                "items": {
      -                  "properties": {
      -                    "ability": {
      -                      "maxLength": 80,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "description": {
      -                      "maxLength": 10000,
      -                      "type": "string"
      -                    },
      -                    "key": {
      -                      "maxLength": 240,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "timings": {
      -                      "items": {
      -                        "oneOf": [
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "phase-start",
      -                                  "phase-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "enum": [
      -                                  "command",
      -                                  "movement",
      -                                  "shooting",
      -                                  "charge",
      -                                  "fight",
      -                                  "any"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "turn-start",
      -                                  "turn-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "round-start",
      -                                  "round-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "const": "either",
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          }
      -                        ]
      -                      },
      -                      "maxItems": 10,
      -                      "minItems": 1,
      -                      "type": "array"
      -                    },
      -                    "unit": {
      -                      "properties": {
      -                        "index": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "index",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "whileDestroyed": {
      -                      "type": "boolean"
      -                    }
      -                  },
      -                  "required": [
      -                    "key",
      -                    "ability",
      -                    "description",
      -                    "timings"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 100,
      -                "type": "array"
      -              },
      -              "remindersEnabled": {
      -                "type": "boolean"
      -              },
      -              "text": {
      -                "maxLength": 20000,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "name",
      -              "text"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "roster"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "destroyed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "set-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "destroyed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-prep",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "primary": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "awards": {
      -                    "items": {
      -                      "properties": {
      -                        "criteria": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 2000,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "cumulative": {
      -                          "type": "boolean"
      -                        },
      -                        "group": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 100,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "max": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 100,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "mode": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 40,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "per": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 200,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "trigger": {
      -                          "properties": {
      -                            "phase": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "playerTurn": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMax": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMin": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "timing": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            }
      -                          },
      -                          "required": [
      -                            "timing",
      -                            "phase",
      -                            "playerTurn",
      -                            "roundMin",
      -                            "roundMax"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "vp": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "vp",
      -                        "per",
      -                        "mode",
      -                        "max",
      -                        "group",
      -                        "cumulative",
      -                        "criteria",
      -                        "trigger"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "key": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "name": {
      -                    "maxLength": 80,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "selection": {
      -                    "enum": [
      -                      "punishment",
      -                      "guards",
      -                      "tempting-target",
      -                      "beacon",
      -                      "locate-and-deny",
      -                      "sensor-sweep",
      -                      "consecrate"
      -                    ],
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "key",
      -                  "name"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon",
      -                    "locate-and-deny",
      -                    "sensor-sweep",
      -                    "consecrate"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 6,
      -            "type": "array"
      -          },
      -          "secondaryDeck": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon",
      -                    "locate-and-deny",
      -                    "sensor-sweep",
      -                    "consecrate"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 60,
      -            "type": "array"
      -          },
      -          "secondaryMode": {
      -            "enum": [
      -              "fixed",
      -              "tactical"
      -            ],
      -            "type": "string"
      -          },
      -          "stratagems": {
      -            "items": {
      -              "properties": {
      -                "cp": {
      -                  "maximum": 6,
      -                  "minimum": 0,
      -                  "type": "integer"
      -                },
      -                "detachment": {
      -                  "maxLength": 249,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "limit": {
      -                  "enum": [
      -                    "phase",
      -                    "turn",
      -                    "battle-round",
      -                    "battle",
      -                    "unlimited"
      -                  ],
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "phases": {
      -                  "items": {
      -                    "enum": [
      -                      "command",
      -                      "movement",
      -                      "shooting",
      -                      "charge",
      -                      "fight",
      -                      "end"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "maxItems": 6,
      -                  "type": "array"
      -                },
      -                "turn": {
      -                  "enum": [
      -                    "your-turn",
      -                    "opponent-turn",
      -                    "either"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name",
      -                "cp",
      -                "limit"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 48,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagems",
      -          "secondaries",
      -          "primary",
      -          "secondaryMode"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "deployed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "deploy-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "deployed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "formation": {
      -            "enum": [
      -              "battlefield",
      -              "strategic-reserves",
      -              "deep-strike",
      -              "embarked"
      -            ],
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-unit-formation",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "transportKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "formation"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-painted",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "painted"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "wound-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "damage-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-deployment",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-battlefield",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "terrainLayoutId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId",
      -          "terrainLayoutId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "use-stratagem",
      -            "type": "string"
      -          },
      -          "missed": {
      -            "properties": {
      -              "phase": {
      -                "enum": [
      -                  "command",
      -                  "movement",
      -                  "shooting",
      -                  "charge",
      -                  "fight",
      -                  "end"
      -                ],
      -                "type": "string"
      -              },
      -              "round": {
      -                "maximum": 5,
      -                "minimum": 1,
      -                "type": "integer"
      -              },
      -              "turn": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "round",
      -              "phase",
      -              "turn"
      -            ],
      -            "type": "object"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "use-new-orders",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon",
      -                  "locate-and-deny",
      -                  "sensor-sweep",
      -                  "consecrate"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          },
      -          "secondaryKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "stratagemKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagemKey",
      -          "secondaryKey",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "score-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "score-settlement",
      -            "type": "string"
      -          },
      -          "missed": {
      -            "properties": {
      -              "phase": {
      -                "enum": [
      -                  "command",
      -                  "movement",
      -                  "shooting",
      -                  "charge",
      -                  "fight",
      -                  "end"
      -                ],
      -                "type": "string"
      -              },
      -              "round": {
      -                "maximum": 5,
      -                "minimum": 1,
      -                "type": "integer"
      -              },
      -              "turn": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "round",
      -              "phase",
      -              "turn"
      -            ],
      -            "type": "object"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "round": {
      -            "maximum": 5,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "scores": {
      -            "items": {
      -              "oneOf": [
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "primary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "final": {
      -                      "properties": {
      -                        "claims": {
      -                          "items": {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "delta": {
      -                          "exclusiveMinimum": 0,
      -                          "maximum": 9007199254740991,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "claims",
      -                        "delta"
      -                      ],
      -                      "type": "object"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "secondary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "key": {
      -                      "maxLength": 64,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "status": {
      -                      "const": "achieved",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "key",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                }
      -              ]
      -            },
      -            "maxItems": 31,
      -            "minItems": 1,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "scores"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-secondary-status",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "status": {
      -            "enum": [
      -              "active",
      -              "achieved",
      -              "discarded",
      -              "returned"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "status"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon",
      -                  "locate-and-deny",
      -                  "sensor-sweep",
      -                  "consecrate"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondaries",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon",
      -                    "locate-and-deny",
      -                    "sensor-sweep",
      -                    "consecrate"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 2,
      -            "minItems": 1,
      -            "type": "array"
      -          },
      -          "selected": {
      -            "const": true,
      -            "type": "boolean"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondaries"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-draw",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-scoring",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "select-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon",
      -                  "locate-and-deny",
      -                  "sensor-sweep",
      -                  "consecrate"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reveal-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "begin-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "adjust-cp",
      -            "type": "string"
      -          },
      -          "missed": {
      -            "properties": {
      -              "phase": {
      -                "enum": [
      -                  "command",
      -                  "movement",
      -                  "shooting",
      -                  "charge",
      -                  "fight",
      -                  "end"
      -                ],
      -                "type": "string"
      -              },
      -              "round": {
      -                "maximum": 5,
      -                "minimum": 1,
      -                "type": "integer"
      -              },
      -              "turn": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "round",
      -              "phase",
      -              "turn"
      -            ],
      -            "type": "object"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "gainCp": {
      -            "type": "boolean"
      -          },
      -          "keys": {
      -            "items": {
      -              "maxLength": 64,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "kind": {
      -            "const": "resolve-tactical-hand",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "category": {
      -            "enum": [
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          },
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "score",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "category",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "correct-player",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "resource": {
      -            "enum": [
      -              "cp",
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "playerId",
      -          "resource",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "settle-opponent-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "request-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "cancel-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "pause-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "resume-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "concededBy": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "end-battle",
      -            "type": "string"
      -          },
      -          "reason": {
      -            "enum": [
      -              "completed",
      -              "finished-early",
      -              "conceded"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reopen-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "add-note",
      -            "type": "string"
      -          },
      -          "text": {
      -            "maxLength": 500,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "text"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "undo",
      -            "type": "string"
      -          },
      -          "target": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "target"
      -        ],
      -        "type": "object"
      -      }
      -    ]
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "attach-saved-roster",
      -        "type": "string"
      -      },
      -      "playerId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "rosterId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "rosterId"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "oneOf": [
      +      {
      +        "properties": {
      +          "cardKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "select-mission",
      +            "type": "string"
      +          },
      +          "occurrence": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "selection": {
      +            "oneOf": [
      +              {
      +                "properties": {
      +                  "fallback": {
      +                    "type": "boolean"
      +                  },
      +                  "kind": {
      +                    "const": "punishment",
      +                    "type": "string"
      +                  },
      +                  "qualified": {
      +                    "type": "boolean"
      +                  },
      +                  "unavailable": {
      +                    "const": true,
      +                    "type": "boolean"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "playerId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "rosterSeq": {
      +                          "exclusiveMinimum": 0,
      +                          "maximum": 9007199254740991,
      +                          "type": "integer"
      +                        },
      +                        "unitKey": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "playerId",
      +                        "unitKey",
      +                        "rosterSeq"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "units",
      +                  "fallback",
      +                  "qualified"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "guards": {
      +                    "items": {
      +                      "properties": {
      +                        "objective": {
      +                          "properties": {
      +                            "key": {
      +                              "maxLength": 128,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "name": {
      +                              "maxLength": 80,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "key",
      +                            "name"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "unit": {
      +                          "properties": {
      +                            "playerId": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "rosterSeq": {
      +                              "exclusiveMinimum": 0,
      +                              "maximum": 9007199254740991,
      +                              "type": "integer"
      +                            },
      +                            "unitKey": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "playerId",
      +                            "unitKey",
      +                            "rosterSeq"
      +                          ],
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "objective",
      +                        "unit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "guards",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "guards"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "kind": {
      +                    "const": "tempting-target",
      +                    "type": "string"
      +                  },
      +                  "noMansLand": {
      +                    "type": "boolean"
      +                  },
      +                  "notHome": {
      +                    "type": "boolean"
      +                  },
      +                  "objective": {
      +                    "properties": {
      +                      "key": {
      +                        "maxLength": 128,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "key",
      +                      "name"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "objective",
      +                  "notHome",
      +                  "noMansLand"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "kind": {
      +                    "const": "beacon",
      +                    "type": "string"
      +                  },
      +                  "note": {
      +                    "maxLength": 200,
      +                    "type": "string"
      +                  },
      +                  "unit": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "playerId": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "rosterSeq": {
      +                            "exclusiveMinimum": 0,
      +                            "maximum": 9007199254740991,
      +                            "type": "integer"
      +                          },
      +                          "unitKey": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "playerId",
      +                          "unitKey",
      +                          "rosterSeq"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "unit",
      +                  "note"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "allEligible": {
      +                    "type": "boolean"
      +                  },
      +                  "areas": {
      +                    "items": {
      +                      "properties": {
      +                        "key": {
      +                          "maxLength": 128,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 5,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "locate-and-deny",
      +                    "type": "string"
      +                  },
      +                  "outsideZone": {
      +                    "type": "boolean"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "areas",
      +                  "outsideZone",
      +                  "allEligible"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "controlled": {
      +                    "type": "boolean"
      +                  },
      +                  "kind": {
      +                    "const": "sensor-sweep",
      +                    "type": "string"
      +                  },
      +                  "marker": {
      +                    "properties": {
      +                      "key": {
      +                        "maxLength": 128,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "playerId": {
      +                        "maxLength": 64,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "key",
      +                      "name",
      +                      "playerId"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "marker",
      +                  "controlled"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "consecrations": {
      +                    "items": {
      +                      "properties": {
      +                        "objective": {
      +                          "properties": {
      +                            "key": {
      +                              "maxLength": 128,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "name": {
      +                              "maxLength": 80,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "key",
      +                            "name"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "unit": {
      +                          "properties": {
      +                            "playerId": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "rosterSeq": {
      +                              "exclusiveMinimum": 0,
      +                              "maximum": 9007199254740991,
      +                              "type": "integer"
      +                            },
      +                            "unitKey": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "playerId",
      +                            "unitKey",
      +                            "rosterSeq"
      +                          ],
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "objective",
      +                        "unit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "consecrate",
      +                    "type": "string"
      +                  },
      +                  "notHome": {
      +                    "type": "boolean"
      +                  },
      +                  "qualified": {
      +                    "type": "boolean"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "consecrations",
      +                  "qualified",
      +                  "notHome"
      +                ],
      +                "type": "object"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "cardKey",
      +          "occurrence",
      +          "selection"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "clockLimitMinutes": {
      +            "anyOf": [
      +              {
      +                "maximum": 300,
      +                "minimum": 5,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "kind": {
      +            "const": "configure-battle",
      +            "type": "string"
      +          },
      +          "limit": {
      +            "anyOf": [
      +              {
      +                "maximum": 10000,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "manual": {
      +            "type": "boolean"
      +          },
      +          "missionPackId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "playerCount": {
      +            "anyOf": [
      +              {
      +                "const": 2,
      +                "type": "number"
      +              },
      +              {
      +                "const": 3,
      +                "type": "number"
      +              },
      +              {
      +                "const": 4,
      +                "type": "number"
      +              }
      +            ]
      +          },
      +          "teamBattle": {
      +            "type": "boolean"
      +          },
      +          "terrainLayoutId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "twistId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "limit",
      +          "missionPackId",
      +          "terrainLayoutId",
      +          "twistId",
      +          "clockLimitMinutes"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reset-setup",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "detach-roster",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "dispositions": {
      +            "items": {
      +              "properties": {
      +                "disposition": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "side": {
      +                  "maximum": 1,
      +                  "minimum": 0,
      +                  "type": "integer"
      +                }
      +              },
      +              "required": [
      +                "side",
      +                "disposition"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 2,
      +            "type": "array"
      +          },
      +          "eventToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "lock-league-rosters",
      +            "type": "string"
      +          },
      +          "leagueToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "leagueToken"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-setup-step",
      +            "type": "string"
      +          },
      +          "step": {
      +            "maximum": 9,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "step"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-attacker",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "attackerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-first-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "disposition": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-side-disposition",
      +            "type": "string"
      +          },
      +          "side": {
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "side",
      +          "disposition"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "attach-roster",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "prep": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "primary": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "awards": {
      +                            "items": {
      +                              "properties": {
      +                                "criteria": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 2000,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "cumulative": {
      +                                  "type": "boolean"
      +                                },
      +                                "group": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 100,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "max": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maximum": 100,
      +                                      "minimum": 0,
      +                                      "type": "integer"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "mode": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 40,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "per": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 200,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "trigger": {
      +                                  "properties": {
      +                                    "phase": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "playerTurn": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMax": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMin": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "timing": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    }
      +                                  },
      +                                  "required": [
      +                                    "timing",
      +                                    "phase",
      +                                    "playerTurn",
      +                                    "roundMin",
      +                                    "roundMax"
      +                                  ],
      +                                  "type": "object"
      +                                },
      +                                "vp": {
      +                                  "maximum": 100,
      +                                  "minimum": 0,
      +                                  "type": "integer"
      +                                }
      +                              },
      +                              "required": [
      +                                "vp",
      +                                "per",
      +                                "mode",
      +                                "max",
      +                                "group",
      +                                "cumulative",
      +                                "criteria",
      +                                "trigger"
      +                              ],
      +                              "type": "object"
      +                            },
      +                            "maxItems": 20,
      +                            "type": "array"
      +                          },
      +                          "key": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "name": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "selection": {
      +                            "enum": [
      +                              "punishment",
      +                              "guards",
      +                              "tempting-target",
      +                              "beacon",
      +                              "locate-and-deny",
      +                              "sensor-sweep",
      +                              "consecrate"
      +                            ],
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "key",
      +                          "name"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "secondaries": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "selection": {
      +                          "enum": [
      +                            "punishment",
      +                            "guards",
      +                            "tempting-target",
      +                            "beacon",
      +                            "locate-and-deny",
      +                            "sensor-sweep",
      +                            "consecrate"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 6,
      +                    "type": "array"
      +                  },
      +                  "secondaryDeck": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "selection": {
      +                          "enum": [
      +                            "punishment",
      +                            "guards",
      +                            "tempting-target",
      +                            "beacon",
      +                            "locate-and-deny",
      +                            "sensor-sweep",
      +                            "consecrate"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 60,
      +                    "type": "array"
      +                  },
      +                  "secondaryMode": {
      +                    "enum": [
      +                      "tactical",
      +                      "fixed"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "stratagems": {
      +                    "items": {
      +                      "properties": {
      +                        "cp": {
      +                          "maximum": 6,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "detachment": {
      +                          "maxLength": 249,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "limit": {
      +                          "enum": [
      +                            "phase",
      +                            "turn",
      +                            "battle-round",
      +                            "battle",
      +                            "unlimited"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "phases": {
      +                          "items": {
      +                            "enum": [
      +                              "command",
      +                              "movement",
      +                              "shooting",
      +                              "charge",
      +                              "fight",
      +                              "end"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 6,
      +                          "type": "array"
      +                        },
      +                        "turn": {
      +                          "enum": [
      +                            "your-turn",
      +                            "opponent-turn",
      +                            "either"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "cp",
      +                        "limit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 48,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "stratagems",
      +                  "secondaries",
      +                  "primary",
      +                  "secondaryMode"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "roster": {
      +            "properties": {
      +              "built": {
      +                "properties": {
      +                  "catalogueId": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "detachment": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 80,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachmentIds": {
      +                    "items": {
      +                      "maxLength": 128,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "detachmentPointBudget": {
      +                    "anyOf": [
      +                      {
      +                        "maximum": 3,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachments": {
      +                    "items": {
      +                      "properties": {
      +                        "name": {
      +                          "maxLength": 80,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 3,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "name",
      +                        "points"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "disposition": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 64,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "dispositions": {
      +                    "items": {
      +                      "maxLength": 64,
      +                      "type": "string"
      +                    },
      +                    "maxItems": 16,
      +                    "type": "array"
      +                  },
      +                  "edition": {
      +                    "properties": {
      +                      "description": {
      +                        "maxLength": 240,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "id": {
      +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "slug": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      +                        "type": "string"
      +                      },
      +                      "status": {
      +                        "enum": [
      +                          "preview",
      +                          "released",
      +                          "retired"
      +                        ],
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "id",
      +                      "name",
      +                      "status"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "limit": {
      +                    "maximum": 10000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "picks": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "catalogueId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "choices": {
      +                          "additionalProperties": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 60,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        },
      +                        "note": {
      +                          "maxLength": 500,
      +                          "type": "string"
      +                        },
      +                        "spreads": {
      +                          "additionalProperties": {
      +                            "additionalProperties": {
      +                              "maximum": 60,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            "propertyNames": {
      +                              "maxLength": 64,
      +                              "type": "string"
      +                            },
      +                            "type": "object"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "toggles": {
      +                          "additionalProperties": {
      +                            "maximum": 1,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "entryId"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 100,
      +                    "type": "array"
      +                  },
      +                  "pointsBudget": {
      +                    "maximum": 10000,
      +                    "minimum": 500,
      +                    "type": "integer"
      +                  },
      +                  "revision": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "strategicReserveLimit": {
      +                    "maximum": 5000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "enhancements": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "formationOptions": {
      +                          "items": {
      +                            "enum": [
      +                              "battlefield",
      +                              "strategic-reserves",
      +                              "deep-strike",
      +                              "embarked"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 4,
      +                          "type": "array"
      +                        },
      +                        "group": {
      +                          "enum": [
      +                            "epic-hero",
      +                            "character",
      +                            "battleline",
      +                            "infantry",
      +                            "swarm",
      +                            "mounted",
      +                            "beast",
      +                            "monster",
      +                            "vehicle",
      +                            "drone",
      +                            "transport",
      +                            "fortification",
      +                            "other"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "joined": {
      +                          "items": {
      +                            "properties": {
      +                              "label": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "label",
      +                              "name"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "keywords": {
      +                          "items": {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 60,
      +                          "type": "array"
      +                        },
      +                        "models": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "note": {
      +                          "maxLength": 500,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "maximum": 10000,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "prebattleRules": {
      +                          "items": {
      +                            "enum": [
      +                              "infiltrators",
      +                              "scouts"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 2,
      +                          "type": "array"
      +                        },
      +                        "strategicReserveExempt": {
      +                          "type": "boolean"
      +                        },
      +                        "transport": {
      +                          "type": "boolean"
      +                        },
      +                        "transportRule": {
      +                          "maxLength": 4000,
      +                          "type": "string"
      +                        },
      +                        "upgrades": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "wargear": {
      +                          "items": {
      +                            "properties": {
      +                              "count": {
      +                                "maximum": 100,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "name",
      +                              "count"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 200,
      +                          "type": "array"
      +                        },
      +                        "warlord": {
      +                          "type": "boolean"
      +                        },
      +                        "warlordEligible": {
      +                          "type": "boolean"
      +                        },
      +                        "wounds": {
      +                          "maximum": 100,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "points",
      +                        "models"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 200,
      +                    "type": "array"
      +                  },
      +                  "waivedRules": {
      +                    "items": {
      +                      "enum": [
      +                        "points-limit",
      +                        "detachments",
      +                        "detachment-points",
      +                        "kotc-infantry",
      +                        "kotc-warlord",
      +                        "kotc-epic-heroes",
      +                        "kotc-toughness",
      +                        "kotc-datasheet-copies"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "maxItems": 8,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "catalogueId",
      +                  "revision",
      +                  "limit",
      +                  "detachment",
      +                  "disposition",
      +                  "units"
      +                ],
      +                "type": "object"
      +              },
      +              "id": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "lentBy": {
      +                "properties": {
      +                  "id": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "maxLength": 48,
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "id",
      +                  "name"
      +                ],
      +                "type": "object"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "type": "string"
      +              },
      +              "reminders": {
      +                "items": {
      +                  "properties": {
      +                    "ability": {
      +                      "maxLength": 80,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "description": {
      +                      "maxLength": 10000,
      +                      "type": "string"
      +                    },
      +                    "key": {
      +                      "maxLength": 240,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "timings": {
      +                      "items": {
      +                        "oneOf": [
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "phase-start",
      +                                  "phase-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "enum": [
      +                                  "command",
      +                                  "movement",
      +                                  "shooting",
      +                                  "charge",
      +                                  "fight",
      +                                  "any"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "turn-start",
      +                                  "turn-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "round-start",
      +                                  "round-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "const": "either",
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          }
      +                        ]
      +                      },
      +                      "maxItems": 10,
      +                      "minItems": 1,
      +                      "type": "array"
      +                    },
      +                    "unit": {
      +                      "properties": {
      +                        "index": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "index",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "whileDestroyed": {
      +                      "type": "boolean"
      +                    }
      +                  },
      +                  "required": [
      +                    "key",
      +                    "ability",
      +                    "description",
      +                    "timings"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 100,
      +                "type": "array"
      +              },
      +              "remindersEnabled": {
      +                "type": "boolean"
      +              },
      +              "text": {
      +                "maxLength": 20000,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "text"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "roster"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "destroyed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "set-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "destroyed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-prep",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "primary": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "awards": {
      +                    "items": {
      +                      "properties": {
      +                        "criteria": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 2000,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "cumulative": {
      +                          "type": "boolean"
      +                        },
      +                        "group": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 100,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "max": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 100,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "mode": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 40,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "per": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 200,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "trigger": {
      +                          "properties": {
      +                            "phase": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "playerTurn": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMax": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMin": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "timing": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            }
      +                          },
      +                          "required": [
      +                            "timing",
      +                            "phase",
      +                            "playerTurn",
      +                            "roundMin",
      +                            "roundMax"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "vp": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "vp",
      +                        "per",
      +                        "mode",
      +                        "max",
      +                        "group",
      +                        "cumulative",
      +                        "criteria",
      +                        "trigger"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "key": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "maxLength": 80,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "selection": {
      +                    "enum": [
      +                      "punishment",
      +                      "guards",
      +                      "tempting-target",
      +                      "beacon",
      +                      "locate-and-deny",
      +                      "sensor-sweep",
      +                      "consecrate"
      +                    ],
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "key",
      +                  "name"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 6,
      +            "type": "array"
      +          },
      +          "secondaryDeck": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 60,
      +            "type": "array"
      +          },
      +          "secondaryMode": {
      +            "enum": [
      +              "tactical",
      +              "fixed"
      +            ],
      +            "type": "string"
      +          },
      +          "stratagems": {
      +            "items": {
      +              "properties": {
      +                "cp": {
      +                  "maximum": 6,
      +                  "minimum": 0,
      +                  "type": "integer"
      +                },
      +                "detachment": {
      +                  "maxLength": 249,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "limit": {
      +                  "enum": [
      +                    "phase",
      +                    "turn",
      +                    "battle-round",
      +                    "battle",
      +                    "unlimited"
      +                  ],
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "phases": {
      +                  "items": {
      +                    "enum": [
      +                      "command",
      +                      "movement",
      +                      "shooting",
      +                      "charge",
      +                      "fight",
      +                      "end"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "maxItems": 6,
      +                  "type": "array"
      +                },
      +                "turn": {
      +                  "enum": [
      +                    "your-turn",
      +                    "opponent-turn",
      +                    "either"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name",
      +                "cp",
      +                "limit"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 48,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagems",
      +          "secondaries",
      +          "primary",
      +          "secondaryMode"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "deployed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "deploy-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "deployed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "formation": {
      +            "enum": [
      +              "battlefield",
      +              "strategic-reserves",
      +              "deep-strike",
      +              "embarked"
      +            ],
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-unit-formation",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "transportKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "formation"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-painted",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "painted"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "wound-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "damage-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-deployment",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-battlefield",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "terrainLayoutId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId",
      +          "terrainLayoutId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "use-stratagem",
      +            "type": "string"
      +          },
      +          "missed": {
      +            "properties": {
      +              "phase": {
      +                "enum": [
      +                  "command",
      +                  "movement",
      +                  "shooting",
      +                  "charge",
      +                  "fight",
      +                  "end"
      +                ],
      +                "type": "string"
      +              },
      +              "round": {
      +                "maximum": 5,
      +                "minimum": 1,
      +                "type": "integer"
      +              },
      +              "turn": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "round",
      +              "phase",
      +              "turn"
      +            ],
      +            "type": "object"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "use-new-orders",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          },
      +          "secondaryKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "stratagemKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagemKey",
      +          "secondaryKey",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "score-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "score-settlement",
      +            "type": "string"
      +          },
      +          "missed": {
      +            "properties": {
      +              "phase": {
      +                "enum": [
      +                  "command",
      +                  "movement",
      +                  "shooting",
      +                  "charge",
      +                  "fight",
      +                  "end"
      +                ],
      +                "type": "string"
      +              },
      +              "round": {
      +                "maximum": 5,
      +                "minimum": 1,
      +                "type": "integer"
      +              },
      +              "turn": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "round",
      +              "phase",
      +              "turn"
      +            ],
      +            "type": "object"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "round": {
      +            "maximum": 5,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "scores": {
      +            "items": {
      +              "oneOf": [
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "primary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "final": {
      +                      "properties": {
      +                        "claims": {
      +                          "items": {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "delta": {
      +                          "exclusiveMinimum": 0,
      +                          "maximum": 9007199254740991,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "claims",
      +                        "delta"
      +                      ],
      +                      "type": "object"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "secondary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "key": {
      +                      "maxLength": 64,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "status": {
      +                      "const": "achieved",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "key",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                }
      +              ]
      +            },
      +            "maxItems": 31,
      +            "minItems": 1,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "scores"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-secondary-status",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "status": {
      +            "enum": [
      +              "active",
      +              "achieved",
      +              "discarded",
      +              "returned"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondaries",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 2,
      +            "minItems": 1,
      +            "type": "array"
      +          },
      +          "selected": {
      +            "const": true,
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondaries"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-draw",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-scoring",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "select-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reveal-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "begin-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "adjust-cp",
      +            "type": "string"
      +          },
      +          "missed": {
      +            "properties": {
      +              "phase": {
      +                "enum": [
      +                  "command",
      +                  "movement",
      +                  "shooting",
      +                  "charge",
      +                  "fight",
      +                  "end"
      +                ],
      +                "type": "string"
      +              },
      +              "round": {
      +                "maximum": 5,
      +                "minimum": 1,
      +                "type": "integer"
      +              },
      +              "turn": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "round",
      +              "phase",
      +              "turn"
      +            ],
      +            "type": "object"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "gainCp": {
      +            "type": "boolean"
      +          },
      +          "keys": {
      +            "items": {
      +              "maxLength": 64,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "kind": {
      +            "const": "resolve-tactical-hand",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "category": {
      +            "enum": [
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          },
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "score",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "category",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "correct-player",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "resource": {
      +            "enum": [
      +              "cp",
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "playerId",
      +          "resource",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "settle-opponent-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "request-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "cancel-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "pause-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "resume-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "concededBy": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "end-battle",
      +            "type": "string"
      +          },
      +          "reason": {
      +            "enum": [
      +              "completed",
      +              "finished-early",
      +              "conceded"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reopen-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "add-note",
      +            "type": "string"
      +          },
      +          "text": {
      +            "maxLength": 500,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "text"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "undo",
      +            "type": "string"
      +          },
      +          "target": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "target"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "attach-saved-roster",
      +        "type": "string"
      +      },
      +      "playerId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "rosterId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "rosterId"
      +    ],
      +    "type": "object"
      +  }
      +]
  4. Changed1 schema field changed
    • changedInput schema / properties / command / anyOf
      Previous value: -[
      -  {
      -    "oneOf": [
      -      {
      -        "properties": {
      -          "cardKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "select-mission",
      -            "type": "string"
      -          },
      -          "occurrence": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "selection": {
      -            "oneOf": [
      -              {
      -                "properties": {
      -                  "fallback": {
      -                    "type": "boolean"
      -                  },
      -                  "kind": {
      -                    "const": "punishment",
      -                    "type": "string"
      -                  },
      -                  "qualified": {
      -                    "type": "boolean"
      -                  },
      -                  "unavailable": {
      -                    "const": true,
      -                    "type": "boolean"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "playerId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "rosterSeq": {
      -                          "exclusiveMinimum": 0,
      -                          "maximum": 9007199254740991,
      -                          "type": "integer"
      -                        },
      -                        "unitKey": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "playerId",
      -                        "unitKey",
      -                        "rosterSeq"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "units",
      -                  "fallback",
      -                  "qualified"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "guards": {
      -                    "items": {
      -                      "properties": {
      -                        "objective": {
      -                          "properties": {
      -                            "key": {
      -                              "maxLength": 128,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "name": {
      -                              "maxLength": 80,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "key",
      -                            "name"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "unit": {
      -                          "properties": {
      -                            "playerId": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "rosterSeq": {
      -                              "exclusiveMinimum": 0,
      -                              "maximum": 9007199254740991,
      -                              "type": "integer"
      -                            },
      -                            "unitKey": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "playerId",
      -                            "unitKey",
      -                            "rosterSeq"
      -                          ],
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "objective",
      -                        "unit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "guards",
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "guards"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "kind": {
      -                    "const": "tempting-target",
      -                    "type": "string"
      -                  },
      -                  "noMansLand": {
      -                    "type": "boolean"
      -                  },
      -                  "notHome": {
      -                    "type": "boolean"
      -                  },
      -                  "objective": {
      -                    "properties": {
      -                      "key": {
      -                        "maxLength": 128,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "key",
      -                      "name"
      -                    ],
      -                    "type": "object"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "objective",
      -                  "notHome",
      -                  "noMansLand"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "kind": {
      -                    "const": "beacon",
      -                    "type": "string"
      -                  },
      -                  "note": {
      -                    "maxLength": 200,
      -                    "type": "string"
      -                  },
      -                  "unit": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "playerId": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "rosterSeq": {
      -                            "exclusiveMinimum": 0,
      -                            "maximum": 9007199254740991,
      -                            "type": "integer"
      -                          },
      -                          "unitKey": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "playerId",
      -                          "unitKey",
      -                          "rosterSeq"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "unit",
      -                  "note"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "allEligible": {
      -                    "type": "boolean"
      -                  },
      -                  "areas": {
      -                    "items": {
      -                      "properties": {
      -                        "key": {
      -                          "maxLength": 128,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 5,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "locate-and-deny",
      -                    "type": "string"
      -                  },
      -                  "outsideZone": {
      -                    "type": "boolean"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "areas",
      -                  "outsideZone",
      -                  "allEligible"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "controlled": {
      -                    "type": "boolean"
      -                  },
      -                  "kind": {
      -                    "const": "sensor-sweep",
      -                    "type": "string"
      -                  },
      -                  "marker": {
      -                    "properties": {
      -                      "key": {
      -                        "maxLength": 128,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "playerId": {
      -                        "maxLength": 64,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "key",
      -                      "name",
      -                      "playerId"
      -                    ],
      -                    "type": "object"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "marker",
      -                  "controlled"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "consecrations": {
      -                    "items": {
      -                      "properties": {
      -                        "objective": {
      -                          "properties": {
      -                            "key": {
      -                              "maxLength": 128,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "name": {
      -                              "maxLength": 80,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "key",
      -                            "name"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "unit": {
      -                          "properties": {
      -                            "playerId": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "rosterSeq": {
      -                              "exclusiveMinimum": 0,
      -                              "maximum": 9007199254740991,
      -                              "type": "integer"
      -                            },
      -                            "unitKey": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "playerId",
      -                            "unitKey",
      -                            "rosterSeq"
      -                          ],
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "objective",
      -                        "unit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "consecrate",
      -                    "type": "string"
      -                  },
      -                  "notHome": {
      -                    "type": "boolean"
      -                  },
      -                  "qualified": {
      -                    "type": "boolean"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "consecrations",
      -                  "qualified",
      -                  "notHome"
      -                ],
      -                "type": "object"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "cardKey",
      -          "occurrence",
      -          "selection"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "clockLimitMinutes": {
      -            "anyOf": [
      -              {
      -                "maximum": 300,
      -                "minimum": 5,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "kind": {
      -            "const": "configure-battle",
      -            "type": "string"
      -          },
      -          "limit": {
      -            "anyOf": [
      -              {
      -                "maximum": 10000,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "manual": {
      -            "type": "boolean"
      -          },
      -          "missionPackId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "playerCount": {
      -            "anyOf": [
      -              {
      -                "const": 2,
      -                "type": "number"
      -              },
      -              {
      -                "const": 3,
      -                "type": "number"
      -              },
      -              {
      -                "const": 4,
      -                "type": "number"
      -              }
      -            ]
      -          },
      -          "teamBattle": {
      -            "type": "boolean"
      -          },
      -          "terrainLayoutId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "twistId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "limit",
      -          "missionPackId",
      -          "terrainLayoutId",
      -          "twistId",
      -          "clockLimitMinutes"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reset-setup",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "detach-roster",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "dispositions": {
      -            "items": {
      -              "properties": {
      -                "disposition": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "side": {
      -                  "maximum": 1,
      -                  "minimum": 0,
      -                  "type": "integer"
      -                }
      -              },
      -              "required": [
      -                "side",
      -                "disposition"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 2,
      -            "type": "array"
      -          },
      -          "eventToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "lock-league-rosters",
      -            "type": "string"
      -          },
      -          "leagueToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "leagueToken"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-setup-step",
      -            "type": "string"
      -          },
      -          "step": {
      -            "maximum": 9,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "step"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-attacker",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "attackerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-first-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "disposition": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-side-disposition",
      -            "type": "string"
      -          },
      -          "side": {
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "side",
      -          "disposition"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "attach-roster",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "prep": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "primary": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "awards": {
      -                            "items": {
      -                              "properties": {
      -                                "criteria": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 2000,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "cumulative": {
      -                                  "type": "boolean"
      -                                },
      -                                "group": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 100,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "max": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maximum": 100,
      -                                      "minimum": 0,
      -                                      "type": "integer"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "mode": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 40,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "per": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 200,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "trigger": {
      -                                  "properties": {
      -                                    "phase": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "playerTurn": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMax": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMin": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "timing": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    }
      -                                  },
      -                                  "required": [
      -                                    "timing",
      -                                    "phase",
      -                                    "playerTurn",
      -                                    "roundMin",
      -                                    "roundMax"
      -                                  ],
      -                                  "type": "object"
      -                                },
      -                                "vp": {
      -                                  "maximum": 100,
      -                                  "minimum": 0,
      -                                  "type": "integer"
      -                                }
      -                              },
      -                              "required": [
      -                                "vp",
      -                                "per",
      -                                "mode",
      -                                "max",
      -                                "group",
      -                                "cumulative",
      -                                "criteria",
      -                                "trigger"
      -                              ],
      -                              "type": "object"
      -                            },
      -                            "maxItems": 20,
      -                            "type": "array"
      -                          },
      -                          "key": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "name": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "selection": {
      -                            "enum": [
      -                              "punishment",
      -                              "guards",
      -                              "tempting-target",
      -                              "beacon",
      -                              "locate-and-deny",
      -                              "sensor-sweep",
      -                              "consecrate"
      -                            ],
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "key",
      -                          "name"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "secondaries": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "selection": {
      -                          "enum": [
      -                            "punishment",
      -                            "guards",
      -                            "tempting-target",
      -                            "beacon",
      -                            "locate-and-deny",
      -                            "sensor-sweep",
      -                            "consecrate"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 6,
      -                    "type": "array"
      -                  },
      -                  "secondaryDeck": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "selection": {
      -                          "enum": [
      -                            "punishment",
      -                            "guards",
      -                            "tempting-target",
      -                            "beacon",
      -                            "locate-and-deny",
      -                            "sensor-sweep",
      -                            "consecrate"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 60,
      -                    "type": "array"
      -                  },
      -                  "secondaryMode": {
      -                    "enum": [
      -                      "fixed",
      -                      "tactical"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "stratagems": {
      -                    "items": {
      -                      "properties": {
      -                        "cp": {
      -                          "maximum": 6,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "detachment": {
      -                          "maxLength": 249,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "limit": {
      -                          "enum": [
      -                            "phase",
      -                            "turn",
      -                            "battle-round",
      -                            "battle",
      -                            "unlimited"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "phases": {
      -                          "items": {
      -                            "enum": [
      -                              "command",
      -                              "movement",
      -                              "shooting",
      -                              "charge",
      -                              "fight",
      -                              "end"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 6,
      -                          "type": "array"
      -                        },
      -                        "turn": {
      -                          "enum": [
      -                            "your-turn",
      -                            "opponent-turn",
      -                            "either"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "cp",
      -                        "limit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 48,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "stratagems",
      -                  "secondaries",
      -                  "primary",
      -                  "secondaryMode"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "roster": {
      -            "properties": {
      -              "built": {
      -                "properties": {
      -                  "catalogueId": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "detachment": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 80,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachmentIds": {
      -                    "items": {
      -                      "maxLength": 128,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "detachmentPointBudget": {
      -                    "anyOf": [
      -                      {
      -                        "maximum": 3,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachments": {
      -                    "items": {
      -                      "properties": {
      -                        "name": {
      -                          "maxLength": 80,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 3,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "name",
      -                        "points"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "disposition": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 64,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "dispositions": {
      -                    "items": {
      -                      "maxLength": 64,
      -                      "type": "string"
      -                    },
      -                    "maxItems": 16,
      -                    "type": "array"
      -                  },
      -                  "edition": {
      -                    "properties": {
      -                      "description": {
      -                        "maxLength": 240,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "id": {
      -                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "slug": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      -                        "type": "string"
      -                      },
      -                      "status": {
      -                        "enum": [
      -                          "preview",
      -                          "released",
      -                          "retired"
      -                        ],
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "id",
      -                      "name",
      -                      "status"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "limit": {
      -                    "maximum": 10000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "picks": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "catalogueId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "choices": {
      -                          "additionalProperties": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 60,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        },
      -                        "note": {
      -                          "maxLength": 500,
      -                          "type": "string"
      -                        },
      -                        "spreads": {
      -                          "additionalProperties": {
      -                            "additionalProperties": {
      -                              "maximum": 60,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            "propertyNames": {
      -                              "maxLength": 64,
      -                              "type": "string"
      -                            },
      -                            "type": "object"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "toggles": {
      -                          "additionalProperties": {
      -                            "maximum": 1,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "entryId"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 100,
      -                    "type": "array"
      -                  },
      -                  "pointsBudget": {
      -                    "maximum": 10000,
      -                    "minimum": 500,
      -                    "type": "integer"
      -                  },
      -                  "revision": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "strategicReserveLimit": {
      -                    "maximum": 5000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "enhancements": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "formationOptions": {
      -                          "items": {
      -                            "enum": [
      -                              "battlefield",
      -                              "strategic-reserves",
      -                              "deep-strike",
      -                              "embarked"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 4,
      -                          "type": "array"
      -                        },
      -                        "group": {
      -                          "enum": [
      -                            "epic-hero",
      -                            "character",
      -                            "battleline",
      -                            "infantry",
      -                            "swarm",
      -                            "mounted",
      -                            "beast",
      -                            "monster",
      -                            "vehicle",
      -                            "drone",
      -                            "transport",
      -                            "fortification",
      -                            "other"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "joined": {
      -                          "items": {
      -                            "properties": {
      -                              "label": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "label",
      -                              "name"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "note": {
      -                          "maxLength": 500,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "maximum": 10000,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "prebattleRules": {
      -                          "items": {
      -                            "enum": [
      -                              "infiltrators",
      -                              "scouts"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 2,
      -                          "type": "array"
      -                        },
      -                        "strategicReserveExempt": {
      -                          "type": "boolean"
      -                        },
      -                        "transport": {
      -                          "type": "boolean"
      -                        },
      -                        "transportRule": {
      -                          "maxLength": 4000,
      -                          "type": "string"
      -                        },
      -                        "upgrades": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "wargear": {
      -                          "items": {
      -                            "properties": {
      -                              "count": {
      -                                "maximum": 100,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "name",
      -                              "count"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 200,
      -                          "type": "array"
      -                        },
      -                        "warlord": {
      -                          "type": "boolean"
      -                        },
      -                        "warlordEligible": {
      -                          "type": "boolean"
      -                        },
      -                        "wounds": {
      -                          "maximum": 100,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "points",
      -                        "models"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 200,
      -                    "type": "array"
      -                  },
      -                  "waivedRules": {
      -                    "items": {
      -                      "enum": [
      -                        "points-limit",
      -                        "detachments",
      -                        "detachment-points",
      -                        "kotc-infantry",
      -                        "kotc-warlord",
      -                        "kotc-epic-heroes",
      -                        "kotc-toughness",
      -                        "kotc-datasheet-copies"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "maxItems": 8,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "catalogueId",
      -                  "revision",
      -                  "limit",
      -                  "detachment",
      -                  "disposition",
      -                  "units"
      -                ],
      -                "type": "object"
      -              },
      -              "id": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "lentBy": {
      -                "properties": {
      -                  "id": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "name": {
      -                    "maxLength": 48,
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "id",
      -                  "name"
      -                ],
      -                "type": "object"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "type": "string"
      -              },
      -              "reminders": {
      -                "items": {
      -                  "properties": {
      -                    "ability": {
      -                      "maxLength": 80,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "description": {
      -                      "maxLength": 10000,
      -                      "type": "string"
      -                    },
      -                    "key": {
      -                      "maxLength": 240,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "timings": {
      -                      "items": {
      -                        "oneOf": [
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "phase-start",
      -                                  "phase-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "enum": [
      -                                  "command",
      -                                  "movement",
      -                                  "shooting",
      -                                  "charge",
      -                                  "fight",
      -                                  "any"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "turn-start",
      -                                  "turn-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "round-start",
      -                                  "round-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "const": "either",
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          }
      -                        ]
      -                      },
      -                      "maxItems": 10,
      -                      "minItems": 1,
      -                      "type": "array"
      -                    },
      -                    "unit": {
      -                      "properties": {
      -                        "index": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "index",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "whileDestroyed": {
      -                      "type": "boolean"
      -                    }
      -                  },
      -                  "required": [
      -                    "key",
      -                    "ability",
      -                    "description",
      -                    "timings"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 100,
      -                "type": "array"
      -              },
      -              "remindersEnabled": {
      -                "type": "boolean"
      -              },
      -              "text": {
      -                "maxLength": 20000,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "name",
      -              "text"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "roster"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "destroyed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "set-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "destroyed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-prep",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "primary": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "awards": {
      -                    "items": {
      -                      "properties": {
      -                        "criteria": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 2000,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "cumulative": {
      -                          "type": "boolean"
      -                        },
      -                        "group": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 100,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "max": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 100,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "mode": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 40,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "per": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 200,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "trigger": {
      -                          "properties": {
      -                            "phase": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "playerTurn": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMax": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMin": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "timing": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            }
      -                          },
      -                          "required": [
      -                            "timing",
      -                            "phase",
      -                            "playerTurn",
      -                            "roundMin",
      -                            "roundMax"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "vp": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "vp",
      -                        "per",
      -                        "mode",
      -                        "max",
      -                        "group",
      -                        "cumulative",
      -                        "criteria",
      -                        "trigger"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "key": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "name": {
      -                    "maxLength": 80,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "selection": {
      -                    "enum": [
      -                      "punishment",
      -                      "guards",
      -                      "tempting-target",
      -                      "beacon",
      -                      "locate-and-deny",
      -                      "sensor-sweep",
      -                      "consecrate"
      -                    ],
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "key",
      -                  "name"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon",
      -                    "locate-and-deny",
      -                    "sensor-sweep",
      -                    "consecrate"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 6,
      -            "type": "array"
      -          },
      -          "secondaryDeck": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon",
      -                    "locate-and-deny",
      -                    "sensor-sweep",
      -                    "consecrate"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 60,
      -            "type": "array"
      -          },
      -          "secondaryMode": {
      -            "enum": [
      -              "fixed",
      -              "tactical"
      -            ],
      -            "type": "string"
      -          },
      -          "stratagems": {
      -            "items": {
      -              "properties": {
      -                "cp": {
      -                  "maximum": 6,
      -                  "minimum": 0,
      -                  "type": "integer"
      -                },
      -                "detachment": {
      -                  "maxLength": 249,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "limit": {
      -                  "enum": [
      -                    "phase",
      -                    "turn",
      -                    "battle-round",
      -                    "battle",
      -                    "unlimited"
      -                  ],
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "phases": {
      -                  "items": {
      -                    "enum": [
      -                      "command",
      -                      "movement",
      -                      "shooting",
      -                      "charge",
      -                      "fight",
      -                      "end"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "maxItems": 6,
      -                  "type": "array"
      -                },
      -                "turn": {
      -                  "enum": [
      -                    "your-turn",
      -                    "opponent-turn",
      -                    "either"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name",
      -                "cp",
      -                "limit"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 48,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagems",
      -          "secondaries",
      -          "primary",
      -          "secondaryMode"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "deployed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "deploy-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "deployed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "formation": {
      -            "enum": [
      -              "battlefield",
      -              "strategic-reserves",
      -              "deep-strike",
      -              "embarked"
      -            ],
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-unit-formation",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "transportKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "formation"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-painted",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "painted"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "wound-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "damage-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-deployment",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-battlefield",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "terrainLayoutId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId",
      -          "terrainLayoutId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "use-stratagem",
      -            "type": "string"
      -          },
      -          "missed": {
      -            "properties": {
      -              "phase": {
      -                "enum": [
      -                  "command",
      -                  "movement",
      -                  "shooting",
      -                  "charge",
      -                  "fight",
      -                  "end"
      -                ],
      -                "type": "string"
      -              },
      -              "round": {
      -                "maximum": 5,
      -                "minimum": 1,
      -                "type": "integer"
      -              },
      -              "turn": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "round",
      -              "phase",
      -              "turn"
      -            ],
      -            "type": "object"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "use-new-orders",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon",
      -                  "locate-and-deny",
      -                  "sensor-sweep",
      -                  "consecrate"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          },
      -          "secondaryKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "stratagemKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagemKey",
      -          "secondaryKey",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "score-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "score-settlement",
      -            "type": "string"
      -          },
      -          "missed": {
      -            "properties": {
      -              "phase": {
      -                "enum": [
      -                  "command",
      -                  "movement",
      -                  "shooting",
      -                  "charge",
      -                  "fight",
      -                  "end"
      -                ],
      -                "type": "string"
      -              },
      -              "round": {
      -                "maximum": 5,
      -                "minimum": 1,
      -                "type": "integer"
      -              },
      -              "turn": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "round",
      -              "phase",
      -              "turn"
      -            ],
      -            "type": "object"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "round": {
      -            "maximum": 5,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "scores": {
      -            "items": {
      -              "oneOf": [
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "primary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "final": {
      -                      "properties": {
      -                        "claims": {
      -                          "items": {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "delta": {
      -                          "exclusiveMinimum": 0,
      -                          "maximum": 9007199254740991,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "claims",
      -                        "delta"
      -                      ],
      -                      "type": "object"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "secondary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "key": {
      -                      "maxLength": 64,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "status": {
      -                      "const": "achieved",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "key",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                }
      -              ]
      -            },
      -            "maxItems": 31,
      -            "minItems": 1,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "scores"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-secondary-status",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "status": {
      -            "enum": [
      -              "active",
      -              "achieved",
      -              "discarded",
      -              "returned"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "status"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon",
      -                  "locate-and-deny",
      -                  "sensor-sweep",
      -                  "consecrate"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondaries",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon",
      -                    "locate-and-deny",
      -                    "sensor-sweep",
      -                    "consecrate"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 2,
      -            "minItems": 1,
      -            "type": "array"
      -          },
      -          "selected": {
      -            "const": true,
      -            "type": "boolean"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondaries"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-draw",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-scoring",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "select-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon",
      -                  "locate-and-deny",
      -                  "sensor-sweep",
      -                  "consecrate"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reveal-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "begin-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "adjust-cp",
      -            "type": "string"
      -          },
      -          "missed": {
      -            "properties": {
      -              "phase": {
      -                "enum": [
      -                  "command",
      -                  "movement",
      -                  "shooting",
      -                  "charge",
      -                  "fight",
      -                  "end"
      -                ],
      -                "type": "string"
      -              },
      -              "round": {
      -                "maximum": 5,
      -                "minimum": 1,
      -                "type": "integer"
      -              },
      -              "turn": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "round",
      -              "phase",
      -              "turn"
      -            ],
      -            "type": "object"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "gainCp": {
      -            "type": "boolean"
      -          },
      -          "keys": {
      -            "items": {
      -              "maxLength": 64,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "kind": {
      -            "const": "resolve-tactical-hand",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "category": {
      -            "enum": [
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          },
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "score",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "category",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "correct-player",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "resource": {
      -            "enum": [
      -              "cp",
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "playerId",
      -          "resource",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "settle-opponent-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "request-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "cancel-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "pause-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "resume-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "concededBy": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "end-battle",
      -            "type": "string"
      -          },
      -          "reason": {
      -            "enum": [
      -              "completed",
      -              "finished-early",
      -              "conceded"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reopen-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "add-note",
      -            "type": "string"
      -          },
      -          "text": {
      -            "maxLength": 500,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "text"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "undo",
      -            "type": "string"
      -          },
      -          "target": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "target"
      -        ],
      -        "type": "object"
      -      }
      -    ]
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "attach-saved-roster",
      -        "type": "string"
      -      },
      -      "playerId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "rosterId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "rosterId"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "oneOf": [
      +      {
      +        "properties": {
      +          "cardKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "select-mission",
      +            "type": "string"
      +          },
      +          "occurrence": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "selection": {
      +            "oneOf": [
      +              {
      +                "properties": {
      +                  "fallback": {
      +                    "type": "boolean"
      +                  },
      +                  "kind": {
      +                    "const": "punishment",
      +                    "type": "string"
      +                  },
      +                  "qualified": {
      +                    "type": "boolean"
      +                  },
      +                  "unavailable": {
      +                    "const": true,
      +                    "type": "boolean"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "playerId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "rosterSeq": {
      +                          "exclusiveMinimum": 0,
      +                          "maximum": 9007199254740991,
      +                          "type": "integer"
      +                        },
      +                        "unitKey": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "playerId",
      +                        "unitKey",
      +                        "rosterSeq"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "units",
      +                  "fallback",
      +                  "qualified"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "guards": {
      +                    "items": {
      +                      "properties": {
      +                        "objective": {
      +                          "properties": {
      +                            "key": {
      +                              "maxLength": 128,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "name": {
      +                              "maxLength": 80,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "key",
      +                            "name"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "unit": {
      +                          "properties": {
      +                            "playerId": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "rosterSeq": {
      +                              "exclusiveMinimum": 0,
      +                              "maximum": 9007199254740991,
      +                              "type": "integer"
      +                            },
      +                            "unitKey": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "playerId",
      +                            "unitKey",
      +                            "rosterSeq"
      +                          ],
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "objective",
      +                        "unit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "guards",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "guards"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "kind": {
      +                    "const": "tempting-target",
      +                    "type": "string"
      +                  },
      +                  "noMansLand": {
      +                    "type": "boolean"
      +                  },
      +                  "notHome": {
      +                    "type": "boolean"
      +                  },
      +                  "objective": {
      +                    "properties": {
      +                      "key": {
      +                        "maxLength": 128,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "key",
      +                      "name"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "objective",
      +                  "notHome",
      +                  "noMansLand"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "kind": {
      +                    "const": "beacon",
      +                    "type": "string"
      +                  },
      +                  "note": {
      +                    "maxLength": 200,
      +                    "type": "string"
      +                  },
      +                  "unit": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "playerId": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "rosterSeq": {
      +                            "exclusiveMinimum": 0,
      +                            "maximum": 9007199254740991,
      +                            "type": "integer"
      +                          },
      +                          "unitKey": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "playerId",
      +                          "unitKey",
      +                          "rosterSeq"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "unit",
      +                  "note"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "allEligible": {
      +                    "type": "boolean"
      +                  },
      +                  "areas": {
      +                    "items": {
      +                      "properties": {
      +                        "key": {
      +                          "maxLength": 128,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 5,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "locate-and-deny",
      +                    "type": "string"
      +                  },
      +                  "outsideZone": {
      +                    "type": "boolean"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "areas",
      +                  "outsideZone",
      +                  "allEligible"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "controlled": {
      +                    "type": "boolean"
      +                  },
      +                  "kind": {
      +                    "const": "sensor-sweep",
      +                    "type": "string"
      +                  },
      +                  "marker": {
      +                    "properties": {
      +                      "key": {
      +                        "maxLength": 128,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "playerId": {
      +                        "maxLength": 64,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "key",
      +                      "name",
      +                      "playerId"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "marker",
      +                  "controlled"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "consecrations": {
      +                    "items": {
      +                      "properties": {
      +                        "objective": {
      +                          "properties": {
      +                            "key": {
      +                              "maxLength": 128,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "name": {
      +                              "maxLength": 80,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "key",
      +                            "name"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "unit": {
      +                          "properties": {
      +                            "playerId": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "rosterSeq": {
      +                              "exclusiveMinimum": 0,
      +                              "maximum": 9007199254740991,
      +                              "type": "integer"
      +                            },
      +                            "unitKey": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "playerId",
      +                            "unitKey",
      +                            "rosterSeq"
      +                          ],
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "objective",
      +                        "unit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "consecrate",
      +                    "type": "string"
      +                  },
      +                  "notHome": {
      +                    "type": "boolean"
      +                  },
      +                  "qualified": {
      +                    "type": "boolean"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "consecrations",
      +                  "qualified",
      +                  "notHome"
      +                ],
      +                "type": "object"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "cardKey",
      +          "occurrence",
      +          "selection"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "clockLimitMinutes": {
      +            "anyOf": [
      +              {
      +                "maximum": 300,
      +                "minimum": 5,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "kind": {
      +            "const": "configure-battle",
      +            "type": "string"
      +          },
      +          "limit": {
      +            "anyOf": [
      +              {
      +                "maximum": 10000,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "manual": {
      +            "type": "boolean"
      +          },
      +          "missionPackId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "playerCount": {
      +            "anyOf": [
      +              {
      +                "const": 2,
      +                "type": "number"
      +              },
      +              {
      +                "const": 3,
      +                "type": "number"
      +              },
      +              {
      +                "const": 4,
      +                "type": "number"
      +              }
      +            ]
      +          },
      +          "teamBattle": {
      +            "type": "boolean"
      +          },
      +          "terrainLayoutId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "twistId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "limit",
      +          "missionPackId",
      +          "terrainLayoutId",
      +          "twistId",
      +          "clockLimitMinutes"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reset-setup",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "detach-roster",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "dispositions": {
      +            "items": {
      +              "properties": {
      +                "disposition": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "side": {
      +                  "maximum": 1,
      +                  "minimum": 0,
      +                  "type": "integer"
      +                }
      +              },
      +              "required": [
      +                "side",
      +                "disposition"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 2,
      +            "type": "array"
      +          },
      +          "eventToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "lock-league-rosters",
      +            "type": "string"
      +          },
      +          "leagueToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "leagueToken"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-setup-step",
      +            "type": "string"
      +          },
      +          "step": {
      +            "maximum": 9,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "step"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-attacker",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "attackerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-first-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "disposition": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-side-disposition",
      +            "type": "string"
      +          },
      +          "side": {
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "side",
      +          "disposition"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "attach-roster",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "prep": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "primary": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "awards": {
      +                            "items": {
      +                              "properties": {
      +                                "criteria": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 2000,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "cumulative": {
      +                                  "type": "boolean"
      +                                },
      +                                "group": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 100,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "max": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maximum": 100,
      +                                      "minimum": 0,
      +                                      "type": "integer"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "mode": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 40,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "per": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 200,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "trigger": {
      +                                  "properties": {
      +                                    "phase": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "playerTurn": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMax": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMin": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "timing": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    }
      +                                  },
      +                                  "required": [
      +                                    "timing",
      +                                    "phase",
      +                                    "playerTurn",
      +                                    "roundMin",
      +                                    "roundMax"
      +                                  ],
      +                                  "type": "object"
      +                                },
      +                                "vp": {
      +                                  "maximum": 100,
      +                                  "minimum": 0,
      +                                  "type": "integer"
      +                                }
      +                              },
      +                              "required": [
      +                                "vp",
      +                                "per",
      +                                "mode",
      +                                "max",
      +                                "group",
      +                                "cumulative",
      +                                "criteria",
      +                                "trigger"
      +                              ],
      +                              "type": "object"
      +                            },
      +                            "maxItems": 20,
      +                            "type": "array"
      +                          },
      +                          "key": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "name": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "selection": {
      +                            "enum": [
      +                              "punishment",
      +                              "guards",
      +                              "tempting-target",
      +                              "beacon",
      +                              "locate-and-deny",
      +                              "sensor-sweep",
      +                              "consecrate"
      +                            ],
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "key",
      +                          "name"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "secondaries": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "selection": {
      +                          "enum": [
      +                            "punishment",
      +                            "guards",
      +                            "tempting-target",
      +                            "beacon",
      +                            "locate-and-deny",
      +                            "sensor-sweep",
      +                            "consecrate"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 6,
      +                    "type": "array"
      +                  },
      +                  "secondaryDeck": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "selection": {
      +                          "enum": [
      +                            "punishment",
      +                            "guards",
      +                            "tempting-target",
      +                            "beacon",
      +                            "locate-and-deny",
      +                            "sensor-sweep",
      +                            "consecrate"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 60,
      +                    "type": "array"
      +                  },
      +                  "secondaryMode": {
      +                    "enum": [
      +                      "fixed",
      +                      "tactical"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "stratagems": {
      +                    "items": {
      +                      "properties": {
      +                        "cp": {
      +                          "maximum": 6,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "detachment": {
      +                          "maxLength": 249,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "limit": {
      +                          "enum": [
      +                            "phase",
      +                            "turn",
      +                            "battle-round",
      +                            "battle",
      +                            "unlimited"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "phases": {
      +                          "items": {
      +                            "enum": [
      +                              "command",
      +                              "movement",
      +                              "shooting",
      +                              "charge",
      +                              "fight",
      +                              "end"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 6,
      +                          "type": "array"
      +                        },
      +                        "turn": {
      +                          "enum": [
      +                            "your-turn",
      +                            "opponent-turn",
      +                            "either"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "cp",
      +                        "limit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 48,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "stratagems",
      +                  "secondaries",
      +                  "primary",
      +                  "secondaryMode"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "roster": {
      +            "properties": {
      +              "built": {
      +                "properties": {
      +                  "catalogueId": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "detachment": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 80,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachmentIds": {
      +                    "items": {
      +                      "maxLength": 128,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "detachmentPointBudget": {
      +                    "anyOf": [
      +                      {
      +                        "maximum": 3,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachments": {
      +                    "items": {
      +                      "properties": {
      +                        "name": {
      +                          "maxLength": 80,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 3,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "name",
      +                        "points"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "disposition": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 64,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "dispositions": {
      +                    "items": {
      +                      "maxLength": 64,
      +                      "type": "string"
      +                    },
      +                    "maxItems": 16,
      +                    "type": "array"
      +                  },
      +                  "edition": {
      +                    "properties": {
      +                      "description": {
      +                        "maxLength": 240,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "id": {
      +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "slug": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      +                        "type": "string"
      +                      },
      +                      "status": {
      +                        "enum": [
      +                          "preview",
      +                          "released",
      +                          "retired"
      +                        ],
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "id",
      +                      "name",
      +                      "status"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "limit": {
      +                    "maximum": 10000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "picks": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "catalogueId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "choices": {
      +                          "additionalProperties": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 60,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        },
      +                        "note": {
      +                          "maxLength": 500,
      +                          "type": "string"
      +                        },
      +                        "spreads": {
      +                          "additionalProperties": {
      +                            "additionalProperties": {
      +                              "maximum": 60,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            "propertyNames": {
      +                              "maxLength": 64,
      +                              "type": "string"
      +                            },
      +                            "type": "object"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "toggles": {
      +                          "additionalProperties": {
      +                            "maximum": 1,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "entryId"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 100,
      +                    "type": "array"
      +                  },
      +                  "pointsBudget": {
      +                    "maximum": 10000,
      +                    "minimum": 500,
      +                    "type": "integer"
      +                  },
      +                  "revision": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "strategicReserveLimit": {
      +                    "maximum": 5000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "enhancements": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "formationOptions": {
      +                          "items": {
      +                            "enum": [
      +                              "battlefield",
      +                              "strategic-reserves",
      +                              "deep-strike",
      +                              "embarked"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 4,
      +                          "type": "array"
      +                        },
      +                        "group": {
      +                          "enum": [
      +                            "epic-hero",
      +                            "character",
      +                            "battleline",
      +                            "infantry",
      +                            "swarm",
      +                            "mounted",
      +                            "beast",
      +                            "monster",
      +                            "vehicle",
      +                            "drone",
      +                            "transport",
      +                            "fortification",
      +                            "other"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "joined": {
      +                          "items": {
      +                            "properties": {
      +                              "label": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "label",
      +                              "name"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "keywords": {
      +                          "items": {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 60,
      +                          "type": "array"
      +                        },
      +                        "models": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "note": {
      +                          "maxLength": 500,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "maximum": 10000,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "prebattleRules": {
      +                          "items": {
      +                            "enum": [
      +                              "infiltrators",
      +                              "scouts"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 2,
      +                          "type": "array"
      +                        },
      +                        "strategicReserveExempt": {
      +                          "type": "boolean"
      +                        },
      +                        "transport": {
      +                          "type": "boolean"
      +                        },
      +                        "transportRule": {
      +                          "maxLength": 4000,
      +                          "type": "string"
      +                        },
      +                        "upgrades": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "wargear": {
      +                          "items": {
      +                            "properties": {
      +                              "count": {
      +                                "maximum": 100,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "name",
      +                              "count"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 200,
      +                          "type": "array"
      +                        },
      +                        "warlord": {
      +                          "type": "boolean"
      +                        },
      +                        "warlordEligible": {
      +                          "type": "boolean"
      +                        },
      +                        "wounds": {
      +                          "maximum": 100,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "points",
      +                        "models"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 200,
      +                    "type": "array"
      +                  },
      +                  "waivedRules": {
      +                    "items": {
      +                      "enum": [
      +                        "points-limit",
      +                        "detachments",
      +                        "detachment-points",
      +                        "kotc-infantry",
      +                        "kotc-warlord",
      +                        "kotc-epic-heroes",
      +                        "kotc-toughness",
      +                        "kotc-datasheet-copies"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "maxItems": 8,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "catalogueId",
      +                  "revision",
      +                  "limit",
      +                  "detachment",
      +                  "disposition",
      +                  "units"
      +                ],
      +                "type": "object"
      +              },
      +              "id": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "lentBy": {
      +                "properties": {
      +                  "id": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "maxLength": 48,
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "id",
      +                  "name"
      +                ],
      +                "type": "object"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "type": "string"
      +              },
      +              "reminders": {
      +                "items": {
      +                  "properties": {
      +                    "ability": {
      +                      "maxLength": 80,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "description": {
      +                      "maxLength": 10000,
      +                      "type": "string"
      +                    },
      +                    "key": {
      +                      "maxLength": 240,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "timings": {
      +                      "items": {
      +                        "oneOf": [
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "phase-start",
      +                                  "phase-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "enum": [
      +                                  "command",
      +                                  "movement",
      +                                  "shooting",
      +                                  "charge",
      +                                  "fight",
      +                                  "any"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "turn-start",
      +                                  "turn-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "round-start",
      +                                  "round-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "const": "either",
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          }
      +                        ]
      +                      },
      +                      "maxItems": 10,
      +                      "minItems": 1,
      +                      "type": "array"
      +                    },
      +                    "unit": {
      +                      "properties": {
      +                        "index": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "index",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "whileDestroyed": {
      +                      "type": "boolean"
      +                    }
      +                  },
      +                  "required": [
      +                    "key",
      +                    "ability",
      +                    "description",
      +                    "timings"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 100,
      +                "type": "array"
      +              },
      +              "remindersEnabled": {
      +                "type": "boolean"
      +              },
      +              "text": {
      +                "maxLength": 20000,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "text"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "roster"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "destroyed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "set-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "destroyed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-prep",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "primary": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "awards": {
      +                    "items": {
      +                      "properties": {
      +                        "criteria": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 2000,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "cumulative": {
      +                          "type": "boolean"
      +                        },
      +                        "group": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 100,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "max": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 100,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "mode": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 40,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "per": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 200,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "trigger": {
      +                          "properties": {
      +                            "phase": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "playerTurn": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMax": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMin": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "timing": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            }
      +                          },
      +                          "required": [
      +                            "timing",
      +                            "phase",
      +                            "playerTurn",
      +                            "roundMin",
      +                            "roundMax"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "vp": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "vp",
      +                        "per",
      +                        "mode",
      +                        "max",
      +                        "group",
      +                        "cumulative",
      +                        "criteria",
      +                        "trigger"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "key": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "maxLength": 80,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "selection": {
      +                    "enum": [
      +                      "punishment",
      +                      "guards",
      +                      "tempting-target",
      +                      "beacon",
      +                      "locate-and-deny",
      +                      "sensor-sweep",
      +                      "consecrate"
      +                    ],
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "key",
      +                  "name"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 6,
      +            "type": "array"
      +          },
      +          "secondaryDeck": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 60,
      +            "type": "array"
      +          },
      +          "secondaryMode": {
      +            "enum": [
      +              "fixed",
      +              "tactical"
      +            ],
      +            "type": "string"
      +          },
      +          "stratagems": {
      +            "items": {
      +              "properties": {
      +                "cp": {
      +                  "maximum": 6,
      +                  "minimum": 0,
      +                  "type": "integer"
      +                },
      +                "detachment": {
      +                  "maxLength": 249,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "limit": {
      +                  "enum": [
      +                    "phase",
      +                    "turn",
      +                    "battle-round",
      +                    "battle",
      +                    "unlimited"
      +                  ],
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "phases": {
      +                  "items": {
      +                    "enum": [
      +                      "command",
      +                      "movement",
      +                      "shooting",
      +                      "charge",
      +                      "fight",
      +                      "end"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "maxItems": 6,
      +                  "type": "array"
      +                },
      +                "turn": {
      +                  "enum": [
      +                    "your-turn",
      +                    "opponent-turn",
      +                    "either"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name",
      +                "cp",
      +                "limit"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 48,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagems",
      +          "secondaries",
      +          "primary",
      +          "secondaryMode"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "deployed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "deploy-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "deployed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "formation": {
      +            "enum": [
      +              "battlefield",
      +              "strategic-reserves",
      +              "deep-strike",
      +              "embarked"
      +            ],
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-unit-formation",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "transportKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "formation"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-painted",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "painted"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "wound-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "damage-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-deployment",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-battlefield",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "terrainLayoutId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId",
      +          "terrainLayoutId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "use-stratagem",
      +            "type": "string"
      +          },
      +          "missed": {
      +            "properties": {
      +              "phase": {
      +                "enum": [
      +                  "command",
      +                  "movement",
      +                  "shooting",
      +                  "charge",
      +                  "fight",
      +                  "end"
      +                ],
      +                "type": "string"
      +              },
      +              "round": {
      +                "maximum": 5,
      +                "minimum": 1,
      +                "type": "integer"
      +              },
      +              "turn": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "round",
      +              "phase",
      +              "turn"
      +            ],
      +            "type": "object"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "use-new-orders",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          },
      +          "secondaryKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "stratagemKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagemKey",
      +          "secondaryKey",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "score-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "score-settlement",
      +            "type": "string"
      +          },
      +          "missed": {
      +            "properties": {
      +              "phase": {
      +                "enum": [
      +                  "command",
      +                  "movement",
      +                  "shooting",
      +                  "charge",
      +                  "fight",
      +                  "end"
      +                ],
      +                "type": "string"
      +              },
      +              "round": {
      +                "maximum": 5,
      +                "minimum": 1,
      +                "type": "integer"
      +              },
      +              "turn": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "round",
      +              "phase",
      +              "turn"
      +            ],
      +            "type": "object"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "round": {
      +            "maximum": 5,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "scores": {
      +            "items": {
      +              "oneOf": [
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "primary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "final": {
      +                      "properties": {
      +                        "claims": {
      +                          "items": {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "delta": {
      +                          "exclusiveMinimum": 0,
      +                          "maximum": 9007199254740991,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "claims",
      +                        "delta"
      +                      ],
      +                      "type": "object"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "secondary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "key": {
      +                      "maxLength": 64,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "status": {
      +                      "const": "achieved",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "key",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                }
      +              ]
      +            },
      +            "maxItems": 31,
      +            "minItems": 1,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "scores"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-secondary-status",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "status": {
      +            "enum": [
      +              "active",
      +              "achieved",
      +              "discarded",
      +              "returned"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondaries",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 2,
      +            "minItems": 1,
      +            "type": "array"
      +          },
      +          "selected": {
      +            "const": true,
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondaries"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-draw",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-scoring",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "select-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reveal-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "begin-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "adjust-cp",
      +            "type": "string"
      +          },
      +          "missed": {
      +            "properties": {
      +              "phase": {
      +                "enum": [
      +                  "command",
      +                  "movement",
      +                  "shooting",
      +                  "charge",
      +                  "fight",
      +                  "end"
      +                ],
      +                "type": "string"
      +              },
      +              "round": {
      +                "maximum": 5,
      +                "minimum": 1,
      +                "type": "integer"
      +              },
      +              "turn": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "round",
      +              "phase",
      +              "turn"
      +            ],
      +            "type": "object"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "gainCp": {
      +            "type": "boolean"
      +          },
      +          "keys": {
      +            "items": {
      +              "maxLength": 64,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "kind": {
      +            "const": "resolve-tactical-hand",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "category": {
      +            "enum": [
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          },
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "score",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "category",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "correct-player",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "resource": {
      +            "enum": [
      +              "cp",
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "playerId",
      +          "resource",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "settle-opponent-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "request-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "cancel-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "pause-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "resume-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "concededBy": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "end-battle",
      +            "type": "string"
      +          },
      +          "reason": {
      +            "enum": [
      +              "completed",
      +              "finished-early",
      +              "conceded"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reopen-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "add-note",
      +            "type": "string"
      +          },
      +          "text": {
      +            "maxLength": 500,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "text"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "undo",
      +            "type": "string"
      +          },
      +          "target": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "target"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "attach-saved-roster",
      +        "type": "string"
      +      },
      +      "playerId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "rosterId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "rosterId"
      +    ],
      +    "type": "object"
      +  }
      +]
  5. Changed1 schema field changed
    • changedInput schema / properties / command / anyOf
      Previous value: -[
      -  {
      -    "oneOf": [
      -      {
      -        "properties": {
      -          "cardKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "select-mission",
      -            "type": "string"
      -          },
      -          "occurrence": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "selection": {
      -            "oneOf": [
      -              {
      -                "properties": {
      -                  "fallback": {
      -                    "type": "boolean"
      -                  },
      -                  "kind": {
      -                    "const": "punishment",
      -                    "type": "string"
      -                  },
      -                  "qualified": {
      -                    "type": "boolean"
      -                  },
      -                  "unavailable": {
      -                    "const": true,
      -                    "type": "boolean"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "playerId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "rosterSeq": {
      -                          "exclusiveMinimum": 0,
      -                          "maximum": 9007199254740991,
      -                          "type": "integer"
      -                        },
      -                        "unitKey": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "playerId",
      -                        "unitKey",
      -                        "rosterSeq"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "units",
      -                  "fallback",
      -                  "qualified"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "guards": {
      -                    "items": {
      -                      "properties": {
      -                        "objective": {
      -                          "properties": {
      -                            "key": {
      -                              "maxLength": 128,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "name": {
      -                              "maxLength": 80,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "key",
      -                            "name"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "unit": {
      -                          "properties": {
      -                            "playerId": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "rosterSeq": {
      -                              "exclusiveMinimum": 0,
      -                              "maximum": 9007199254740991,
      -                              "type": "integer"
      -                            },
      -                            "unitKey": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "playerId",
      -                            "unitKey",
      -                            "rosterSeq"
      -                          ],
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "objective",
      -                        "unit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "guards",
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "guards"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "kind": {
      -                    "const": "tempting-target",
      -                    "type": "string"
      -                  },
      -                  "noMansLand": {
      -                    "type": "boolean"
      -                  },
      -                  "notHome": {
      -                    "type": "boolean"
      -                  },
      -                  "objective": {
      -                    "properties": {
      -                      "key": {
      -                        "maxLength": 128,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "key",
      -                      "name"
      -                    ],
      -                    "type": "object"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "objective",
      -                  "notHome",
      -                  "noMansLand"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "kind": {
      -                    "const": "beacon",
      -                    "type": "string"
      -                  },
      -                  "note": {
      -                    "maxLength": 200,
      -                    "type": "string"
      -                  },
      -                  "unit": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "playerId": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "rosterSeq": {
      -                            "exclusiveMinimum": 0,
      -                            "maximum": 9007199254740991,
      -                            "type": "integer"
      -                          },
      -                          "unitKey": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "playerId",
      -                          "unitKey",
      -                          "rosterSeq"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "unit",
      -                  "note"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "allEligible": {
      -                    "type": "boolean"
      -                  },
      -                  "areas": {
      -                    "items": {
      -                      "properties": {
      -                        "key": {
      -                          "maxLength": 128,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 5,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "locate-and-deny",
      -                    "type": "string"
      -                  },
      -                  "outsideZone": {
      -                    "type": "boolean"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "areas",
      -                  "outsideZone",
      -                  "allEligible"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "controlled": {
      -                    "type": "boolean"
      -                  },
      -                  "kind": {
      -                    "const": "sensor-sweep",
      -                    "type": "string"
      -                  },
      -                  "marker": {
      -                    "properties": {
      -                      "key": {
      -                        "maxLength": 128,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "playerId": {
      -                        "maxLength": 64,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "key",
      -                      "name",
      -                      "playerId"
      -                    ],
      -                    "type": "object"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "marker",
      -                  "controlled"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "consecrations": {
      -                    "items": {
      -                      "properties": {
      -                        "objective": {
      -                          "properties": {
      -                            "key": {
      -                              "maxLength": 128,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "name": {
      -                              "maxLength": 80,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "key",
      -                            "name"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "unit": {
      -                          "properties": {
      -                            "playerId": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "rosterSeq": {
      -                              "exclusiveMinimum": 0,
      -                              "maximum": 9007199254740991,
      -                              "type": "integer"
      -                            },
      -                            "unitKey": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "playerId",
      -                            "unitKey",
      -                            "rosterSeq"
      -                          ],
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "objective",
      -                        "unit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "consecrate",
      -                    "type": "string"
      -                  },
      -                  "notHome": {
      -                    "type": "boolean"
      -                  },
      -                  "qualified": {
      -                    "type": "boolean"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "consecrations",
      -                  "qualified",
      -                  "notHome"
      -                ],
      -                "type": "object"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "cardKey",
      -          "occurrence",
      -          "selection"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "clockLimitMinutes": {
      -            "anyOf": [
      -              {
      -                "maximum": 300,
      -                "minimum": 5,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "kind": {
      -            "const": "configure-battle",
      -            "type": "string"
      -          },
      -          "limit": {
      -            "anyOf": [
      -              {
      -                "maximum": 10000,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "manual": {
      -            "type": "boolean"
      -          },
      -          "missionPackId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "playerCount": {
      -            "anyOf": [
      -              {
      -                "const": 2,
      -                "type": "number"
      -              },
      -              {
      -                "const": 3,
      -                "type": "number"
      -              },
      -              {
      -                "const": 4,
      -                "type": "number"
      -              }
      -            ]
      -          },
      -          "teamBattle": {
      -            "type": "boolean"
      -          },
      -          "terrainLayoutId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "twistId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "limit",
      -          "missionPackId",
      -          "terrainLayoutId",
      -          "twistId",
      -          "clockLimitMinutes"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reset-setup",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "detach-roster",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "eventToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "lock-league-rosters",
      -            "type": "string"
      -          },
      -          "leagueToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "leagueToken"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-setup-step",
      -            "type": "string"
      -          },
      -          "step": {
      -            "maximum": 9,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "step"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-attacker",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "attackerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-first-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "disposition": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-side-disposition",
      -            "type": "string"
      -          },
      -          "side": {
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "side",
      -          "disposition"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "attach-roster",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "prep": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "primary": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "awards": {
      -                            "items": {
      -                              "properties": {
      -                                "criteria": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 2000,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "cumulative": {
      -                                  "type": "boolean"
      -                                },
      -                                "group": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 100,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "max": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maximum": 100,
      -                                      "minimum": 0,
      -                                      "type": "integer"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "mode": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 40,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "per": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 200,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "trigger": {
      -                                  "properties": {
      -                                    "phase": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "playerTurn": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMax": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMin": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "timing": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    }
      -                                  },
      -                                  "required": [
      -                                    "timing",
      -                                    "phase",
      -                                    "playerTurn",
      -                                    "roundMin",
      -                                    "roundMax"
      -                                  ],
      -                                  "type": "object"
      -                                },
      -                                "vp": {
      -                                  "maximum": 100,
      -                                  "minimum": 0,
      -                                  "type": "integer"
      -                                }
      -                              },
      -                              "required": [
      -                                "vp",
      -                                "per",
      -                                "mode",
      -                                "max",
      -                                "group",
      -                                "cumulative",
      -                                "criteria",
      -                                "trigger"
      -                              ],
      -                              "type": "object"
      -                            },
      -                            "maxItems": 20,
      -                            "type": "array"
      -                          },
      -                          "key": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "name": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "selection": {
      -                            "enum": [
      -                              "punishment",
      -                              "guards",
      -                              "tempting-target",
      -                              "beacon",
      -                              "locate-and-deny",
      -                              "sensor-sweep",
      -                              "consecrate"
      -                            ],
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "key",
      -                          "name"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "secondaries": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "selection": {
      -                          "enum": [
      -                            "punishment",
      -                            "guards",
      -                            "tempting-target",
      -                            "beacon",
      -                            "locate-and-deny",
      -                            "sensor-sweep",
      -                            "consecrate"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 6,
      -                    "type": "array"
      -                  },
      -                  "secondaryDeck": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "selection": {
      -                          "enum": [
      -                            "punishment",
      -                            "guards",
      -                            "tempting-target",
      -                            "beacon",
      -                            "locate-and-deny",
      -                            "sensor-sweep",
      -                            "consecrate"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 60,
      -                    "type": "array"
      -                  },
      -                  "secondaryMode": {
      -                    "enum": [
      -                      "fixed",
      -                      "tactical"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "stratagems": {
      -                    "items": {
      -                      "properties": {
      -                        "cp": {
      -                          "maximum": 6,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "detachment": {
      -                          "maxLength": 249,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "limit": {
      -                          "enum": [
      -                            "phase",
      -                            "turn",
      -                            "battle-round",
      -                            "battle",
      -                            "unlimited"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "phases": {
      -                          "items": {
      -                            "enum": [
      -                              "command",
      -                              "movement",
      -                              "shooting",
      -                              "charge",
      -                              "fight",
      -                              "end"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 6,
      -                          "type": "array"
      -                        },
      -                        "turn": {
      -                          "enum": [
      -                            "your-turn",
      -                            "opponent-turn",
      -                            "either"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "cp",
      -                        "limit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 48,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "stratagems",
      -                  "secondaries",
      -                  "primary",
      -                  "secondaryMode"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "roster": {
      -            "properties": {
      -              "built": {
      -                "properties": {
      -                  "catalogueId": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "detachment": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 80,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachmentIds": {
      -                    "items": {
      -                      "maxLength": 128,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "detachmentPointBudget": {
      -                    "anyOf": [
      -                      {
      -                        "maximum": 3,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachments": {
      -                    "items": {
      -                      "properties": {
      -                        "name": {
      -                          "maxLength": 80,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 3,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "name",
      -                        "points"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "disposition": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 64,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "edition": {
      -                    "properties": {
      -                      "description": {
      -                        "maxLength": 240,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "id": {
      -                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "slug": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      -                        "type": "string"
      -                      },
      -                      "status": {
      -                        "enum": [
      -                          "preview",
      -                          "released",
      -                          "retired"
      -                        ],
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "id",
      -                      "name",
      -                      "status"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "limit": {
      -                    "maximum": 10000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "picks": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "catalogueId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "choices": {
      -                          "additionalProperties": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 60,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        },
      -                        "note": {
      -                          "maxLength": 500,
      -                          "type": "string"
      -                        },
      -                        "spreads": {
      -                          "additionalProperties": {
      -                            "additionalProperties": {
      -                              "maximum": 60,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            "propertyNames": {
      -                              "maxLength": 64,
      -                              "type": "string"
      -                            },
      -                            "type": "object"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "toggles": {
      -                          "additionalProperties": {
      -                            "maximum": 1,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "entryId"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 100,
      -                    "type": "array"
      -                  },
      -                  "pointsBudget": {
      -                    "maximum": 10000,
      -                    "minimum": 500,
      -                    "type": "integer"
      -                  },
      -                  "revision": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "strategicReserveLimit": {
      -                    "maximum": 5000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "enhancements": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "formationOptions": {
      -                          "items": {
      -                            "enum": [
      -                              "battlefield",
      -                              "strategic-reserves",
      -                              "deep-strike",
      -                              "embarked"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 4,
      -                          "type": "array"
      -                        },
      -                        "group": {
      -                          "enum": [
      -                            "epic-hero",
      -                            "character",
      -                            "battleline",
      -                            "infantry",
      -                            "swarm",
      -                            "mounted",
      -                            "beast",
      -                            "monster",
      -                            "vehicle",
      -                            "drone",
      -                            "transport",
      -                            "fortification",
      -                            "other"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "joined": {
      -                          "items": {
      -                            "properties": {
      -                              "label": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "label",
      -                              "name"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "note": {
      -                          "maxLength": 500,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "maximum": 10000,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "prebattleRules": {
      -                          "items": {
      -                            "enum": [
      -                              "infiltrators",
      -                              "scouts"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 2,
      -                          "type": "array"
      -                        },
      -                        "strategicReserveExempt": {
      -                          "type": "boolean"
      -                        },
      -                        "transport": {
      -                          "type": "boolean"
      -                        },
      -                        "transportRule": {
      -                          "maxLength": 4000,
      -                          "type": "string"
      -                        },
      -                        "upgrades": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "wargear": {
      -                          "items": {
      -                            "properties": {
      -                              "count": {
      -                                "maximum": 100,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "name",
      -                              "count"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 200,
      -                          "type": "array"
      -                        },
      -                        "warlord": {
      -                          "type": "boolean"
      -                        },
      -                        "warlordEligible": {
      -                          "type": "boolean"
      -                        },
      -                        "wounds": {
      -                          "maximum": 100,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "points",
      -                        "models"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 200,
      -                    "type": "array"
      -                  },
      -                  "waivedRules": {
      -                    "items": {
      -                      "enum": [
      -                        "points-limit",
      -                        "detachments",
      -                        "detachment-points",
      -                        "kotc-infantry",
      -                        "kotc-warlord",
      -                        "kotc-epic-heroes",
      -                        "kotc-toughness",
      -                        "kotc-datasheet-copies"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "maxItems": 8,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "catalogueId",
      -                  "revision",
      -                  "limit",
      -                  "detachment",
      -                  "disposition",
      -                  "units"
      -                ],
      -                "type": "object"
      -              },
      -              "id": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "lentBy": {
      -                "properties": {
      -                  "id": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "name": {
      -                    "maxLength": 48,
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "id",
      -                  "name"
      -                ],
      -                "type": "object"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "type": "string"
      -              },
      -              "reminders": {
      -                "items": {
      -                  "properties": {
      -                    "ability": {
      -                      "maxLength": 80,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "description": {
      -                      "maxLength": 10000,
      -                      "type": "string"
      -                    },
      -                    "key": {
      -                      "maxLength": 240,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "timings": {
      -                      "items": {
      -                        "oneOf": [
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "phase-start",
      -                                  "phase-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "enum": [
      -                                  "command",
      -                                  "movement",
      -                                  "shooting",
      -                                  "charge",
      -                                  "fight",
      -                                  "any"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "turn-start",
      -                                  "turn-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "round-start",
      -                                  "round-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "const": "either",
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          }
      -                        ]
      -                      },
      -                      "maxItems": 10,
      -                      "minItems": 1,
      -                      "type": "array"
      -                    },
      -                    "unit": {
      -                      "properties": {
      -                        "index": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "index",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "whileDestroyed": {
      -                      "type": "boolean"
      -                    }
      -                  },
      -                  "required": [
      -                    "key",
      -                    "ability",
      -                    "description",
      -                    "timings"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 100,
      -                "type": "array"
      -              },
      -              "remindersEnabled": {
      -                "type": "boolean"
      -              },
      -              "text": {
      -                "maxLength": 20000,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "name",
      -              "text"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "roster"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "destroyed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "set-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "destroyed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-prep",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "primary": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "awards": {
      -                    "items": {
      -                      "properties": {
      -                        "criteria": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 2000,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "cumulative": {
      -                          "type": "boolean"
      -                        },
      -                        "group": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 100,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "max": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 100,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "mode": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 40,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "per": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 200,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "trigger": {
      -                          "properties": {
      -                            "phase": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "playerTurn": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMax": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMin": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "timing": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            }
      -                          },
      -                          "required": [
      -                            "timing",
      -                            "phase",
      -                            "playerTurn",
      -                            "roundMin",
      -                            "roundMax"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "vp": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "vp",
      -                        "per",
      -                        "mode",
      -                        "max",
      -                        "group",
      -                        "cumulative",
      -                        "criteria",
      -                        "trigger"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "key": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "name": {
      -                    "maxLength": 80,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "selection": {
      -                    "enum": [
      -                      "punishment",
      -                      "guards",
      -                      "tempting-target",
      -                      "beacon",
      -                      "locate-and-deny",
      -                      "sensor-sweep",
      -                      "consecrate"
      -                    ],
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "key",
      -                  "name"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon",
      -                    "locate-and-deny",
      -                    "sensor-sweep",
      -                    "consecrate"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 6,
      -            "type": "array"
      -          },
      -          "secondaryDeck": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon",
      -                    "locate-and-deny",
      -                    "sensor-sweep",
      -                    "consecrate"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 60,
      -            "type": "array"
      -          },
      -          "secondaryMode": {
      -            "enum": [
      -              "fixed",
      -              "tactical"
      -            ],
      -            "type": "string"
      -          },
      -          "stratagems": {
      -            "items": {
      -              "properties": {
      -                "cp": {
      -                  "maximum": 6,
      -                  "minimum": 0,
      -                  "type": "integer"
      -                },
      -                "detachment": {
      -                  "maxLength": 249,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "limit": {
      -                  "enum": [
      -                    "phase",
      -                    "turn",
      -                    "battle-round",
      -                    "battle",
      -                    "unlimited"
      -                  ],
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "phases": {
      -                  "items": {
      -                    "enum": [
      -                      "command",
      -                      "movement",
      -                      "shooting",
      -                      "charge",
      -                      "fight",
      -                      "end"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "maxItems": 6,
      -                  "type": "array"
      -                },
      -                "turn": {
      -                  "enum": [
      -                    "your-turn",
      -                    "opponent-turn",
      -                    "either"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name",
      -                "cp",
      -                "limit"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 48,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagems",
      -          "secondaries",
      -          "primary",
      -          "secondaryMode"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "deployed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "deploy-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "deployed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "formation": {
      -            "enum": [
      -              "battlefield",
      -              "strategic-reserves",
      -              "deep-strike",
      -              "embarked"
      -            ],
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-unit-formation",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "transportKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "formation"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-painted",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "painted"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "wound-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "damage-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-deployment",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-battlefield",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "terrainLayoutId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId",
      -          "terrainLayoutId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "use-stratagem",
      -            "type": "string"
      -          },
      -          "missed": {
      -            "properties": {
      -              "phase": {
      -                "enum": [
      -                  "command",
      -                  "movement",
      -                  "shooting",
      -                  "charge",
      -                  "fight",
      -                  "end"
      -                ],
      -                "type": "string"
      -              },
      -              "round": {
      -                "maximum": 5,
      -                "minimum": 1,
      -                "type": "integer"
      -              },
      -              "turn": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "round",
      -              "phase",
      -              "turn"
      -            ],
      -            "type": "object"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "use-new-orders",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon",
      -                  "locate-and-deny",
      -                  "sensor-sweep",
      -                  "consecrate"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          },
      -          "secondaryKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "stratagemKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagemKey",
      -          "secondaryKey",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "score-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "score-settlement",
      -            "type": "string"
      -          },
      -          "missed": {
      -            "properties": {
      -              "phase": {
      -                "enum": [
      -                  "command",
      -                  "movement",
      -                  "shooting",
      -                  "charge",
      -                  "fight",
      -                  "end"
      -                ],
      -                "type": "string"
      -              },
      -              "round": {
      -                "maximum": 5,
      -                "minimum": 1,
      -                "type": "integer"
      -              },
      -              "turn": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "round",
      -              "phase",
      -              "turn"
      -            ],
      -            "type": "object"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "round": {
      -            "maximum": 5,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "scores": {
      -            "items": {
      -              "oneOf": [
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "primary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "final": {
      -                      "properties": {
      -                        "claims": {
      -                          "items": {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "delta": {
      -                          "exclusiveMinimum": 0,
      -                          "maximum": 9007199254740991,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "claims",
      -                        "delta"
      -                      ],
      -                      "type": "object"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "secondary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "key": {
      -                      "maxLength": 64,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "status": {
      -                      "const": "achieved",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "key",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                }
      -              ]
      -            },
      -            "maxItems": 31,
      -            "minItems": 1,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "scores"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-secondary-status",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "status": {
      -            "enum": [
      -              "active",
      -              "achieved",
      -              "discarded",
      -              "returned"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "status"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon",
      -                  "locate-and-deny",
      -                  "sensor-sweep",
      -                  "consecrate"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondaries",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon",
      -                    "locate-and-deny",
      -                    "sensor-sweep",
      -                    "consecrate"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 2,
      -            "minItems": 1,
      -            "type": "array"
      -          },
      -          "selected": {
      -            "const": true,
      -            "type": "boolean"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondaries"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-draw",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-scoring",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "select-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon",
      -                  "locate-and-deny",
      -                  "sensor-sweep",
      -                  "consecrate"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reveal-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "begin-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "adjust-cp",
      -            "type": "string"
      -          },
      -          "missed": {
      -            "properties": {
      -              "phase": {
      -                "enum": [
      -                  "command",
      -                  "movement",
      -                  "shooting",
      -                  "charge",
      -                  "fight",
      -                  "end"
      -                ],
      -                "type": "string"
      -              },
      -              "round": {
      -                "maximum": 5,
      -                "minimum": 1,
      -                "type": "integer"
      -              },
      -              "turn": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "round",
      -              "phase",
      -              "turn"
      -            ],
      -            "type": "object"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "gainCp": {
      -            "type": "boolean"
      -          },
      -          "keys": {
      -            "items": {
      -              "maxLength": 64,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "kind": {
      -            "const": "resolve-tactical-hand",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "category": {
      -            "enum": [
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          },
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "score",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "category",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "correct-player",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "resource": {
      -            "enum": [
      -              "cp",
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "playerId",
      -          "resource",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "settle-opponent-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "request-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "cancel-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "pause-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "resume-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "concededBy": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "end-battle",
      -            "type": "string"
      -          },
      -          "reason": {
      -            "enum": [
      -              "completed",
      -              "finished-early",
      -              "conceded"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reopen-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "add-note",
      -            "type": "string"
      -          },
      -          "text": {
      -            "maxLength": 500,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "text"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "undo",
      -            "type": "string"
      -          },
      -          "target": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "target"
      -        ],
      -        "type": "object"
      -      }
      -    ]
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "attach-saved-roster",
      -        "type": "string"
      -      },
      -      "playerId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "rosterId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "rosterId"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "oneOf": [
      +      {
      +        "properties": {
      +          "cardKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "select-mission",
      +            "type": "string"
      +          },
      +          "occurrence": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "selection": {
      +            "oneOf": [
      +              {
      +                "properties": {
      +                  "fallback": {
      +                    "type": "boolean"
      +                  },
      +                  "kind": {
      +                    "const": "punishment",
      +                    "type": "string"
      +                  },
      +                  "qualified": {
      +                    "type": "boolean"
      +                  },
      +                  "unavailable": {
      +                    "const": true,
      +                    "type": "boolean"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "playerId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "rosterSeq": {
      +                          "exclusiveMinimum": 0,
      +                          "maximum": 9007199254740991,
      +                          "type": "integer"
      +                        },
      +                        "unitKey": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "playerId",
      +                        "unitKey",
      +                        "rosterSeq"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "units",
      +                  "fallback",
      +                  "qualified"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "guards": {
      +                    "items": {
      +                      "properties": {
      +                        "objective": {
      +                          "properties": {
      +                            "key": {
      +                              "maxLength": 128,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "name": {
      +                              "maxLength": 80,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "key",
      +                            "name"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "unit": {
      +                          "properties": {
      +                            "playerId": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "rosterSeq": {
      +                              "exclusiveMinimum": 0,
      +                              "maximum": 9007199254740991,
      +                              "type": "integer"
      +                            },
      +                            "unitKey": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "playerId",
      +                            "unitKey",
      +                            "rosterSeq"
      +                          ],
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "objective",
      +                        "unit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "guards",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "guards"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "kind": {
      +                    "const": "tempting-target",
      +                    "type": "string"
      +                  },
      +                  "noMansLand": {
      +                    "type": "boolean"
      +                  },
      +                  "notHome": {
      +                    "type": "boolean"
      +                  },
      +                  "objective": {
      +                    "properties": {
      +                      "key": {
      +                        "maxLength": 128,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "key",
      +                      "name"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "objective",
      +                  "notHome",
      +                  "noMansLand"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "kind": {
      +                    "const": "beacon",
      +                    "type": "string"
      +                  },
      +                  "note": {
      +                    "maxLength": 200,
      +                    "type": "string"
      +                  },
      +                  "unit": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "playerId": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "rosterSeq": {
      +                            "exclusiveMinimum": 0,
      +                            "maximum": 9007199254740991,
      +                            "type": "integer"
      +                          },
      +                          "unitKey": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "playerId",
      +                          "unitKey",
      +                          "rosterSeq"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "unit",
      +                  "note"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "allEligible": {
      +                    "type": "boolean"
      +                  },
      +                  "areas": {
      +                    "items": {
      +                      "properties": {
      +                        "key": {
      +                          "maxLength": 128,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 5,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "locate-and-deny",
      +                    "type": "string"
      +                  },
      +                  "outsideZone": {
      +                    "type": "boolean"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "areas",
      +                  "outsideZone",
      +                  "allEligible"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "controlled": {
      +                    "type": "boolean"
      +                  },
      +                  "kind": {
      +                    "const": "sensor-sweep",
      +                    "type": "string"
      +                  },
      +                  "marker": {
      +                    "properties": {
      +                      "key": {
      +                        "maxLength": 128,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "playerId": {
      +                        "maxLength": 64,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "key",
      +                      "name",
      +                      "playerId"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "marker",
      +                  "controlled"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "consecrations": {
      +                    "items": {
      +                      "properties": {
      +                        "objective": {
      +                          "properties": {
      +                            "key": {
      +                              "maxLength": 128,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "name": {
      +                              "maxLength": 80,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "key",
      +                            "name"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "unit": {
      +                          "properties": {
      +                            "playerId": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "rosterSeq": {
      +                              "exclusiveMinimum": 0,
      +                              "maximum": 9007199254740991,
      +                              "type": "integer"
      +                            },
      +                            "unitKey": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "playerId",
      +                            "unitKey",
      +                            "rosterSeq"
      +                          ],
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "objective",
      +                        "unit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "consecrate",
      +                    "type": "string"
      +                  },
      +                  "notHome": {
      +                    "type": "boolean"
      +                  },
      +                  "qualified": {
      +                    "type": "boolean"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "consecrations",
      +                  "qualified",
      +                  "notHome"
      +                ],
      +                "type": "object"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "cardKey",
      +          "occurrence",
      +          "selection"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "clockLimitMinutes": {
      +            "anyOf": [
      +              {
      +                "maximum": 300,
      +                "minimum": 5,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "kind": {
      +            "const": "configure-battle",
      +            "type": "string"
      +          },
      +          "limit": {
      +            "anyOf": [
      +              {
      +                "maximum": 10000,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "manual": {
      +            "type": "boolean"
      +          },
      +          "missionPackId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "playerCount": {
      +            "anyOf": [
      +              {
      +                "const": 2,
      +                "type": "number"
      +              },
      +              {
      +                "const": 3,
      +                "type": "number"
      +              },
      +              {
      +                "const": 4,
      +                "type": "number"
      +              }
      +            ]
      +          },
      +          "teamBattle": {
      +            "type": "boolean"
      +          },
      +          "terrainLayoutId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "twistId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "limit",
      +          "missionPackId",
      +          "terrainLayoutId",
      +          "twistId",
      +          "clockLimitMinutes"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reset-setup",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "detach-roster",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "dispositions": {
      +            "items": {
      +              "properties": {
      +                "disposition": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "side": {
      +                  "maximum": 1,
      +                  "minimum": 0,
      +                  "type": "integer"
      +                }
      +              },
      +              "required": [
      +                "side",
      +                "disposition"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 2,
      +            "type": "array"
      +          },
      +          "eventToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "lock-league-rosters",
      +            "type": "string"
      +          },
      +          "leagueToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "leagueToken"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-setup-step",
      +            "type": "string"
      +          },
      +          "step": {
      +            "maximum": 9,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "step"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-attacker",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "attackerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-first-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "disposition": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-side-disposition",
      +            "type": "string"
      +          },
      +          "side": {
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "side",
      +          "disposition"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "attach-roster",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "prep": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "primary": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "awards": {
      +                            "items": {
      +                              "properties": {
      +                                "criteria": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 2000,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "cumulative": {
      +                                  "type": "boolean"
      +                                },
      +                                "group": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 100,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "max": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maximum": 100,
      +                                      "minimum": 0,
      +                                      "type": "integer"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "mode": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 40,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "per": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 200,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "trigger": {
      +                                  "properties": {
      +                                    "phase": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "playerTurn": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMax": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMin": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "timing": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    }
      +                                  },
      +                                  "required": [
      +                                    "timing",
      +                                    "phase",
      +                                    "playerTurn",
      +                                    "roundMin",
      +                                    "roundMax"
      +                                  ],
      +                                  "type": "object"
      +                                },
      +                                "vp": {
      +                                  "maximum": 100,
      +                                  "minimum": 0,
      +                                  "type": "integer"
      +                                }
      +                              },
      +                              "required": [
      +                                "vp",
      +                                "per",
      +                                "mode",
      +                                "max",
      +                                "group",
      +                                "cumulative",
      +                                "criteria",
      +                                "trigger"
      +                              ],
      +                              "type": "object"
      +                            },
      +                            "maxItems": 20,
      +                            "type": "array"
      +                          },
      +                          "key": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "name": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "selection": {
      +                            "enum": [
      +                              "punishment",
      +                              "guards",
      +                              "tempting-target",
      +                              "beacon",
      +                              "locate-and-deny",
      +                              "sensor-sweep",
      +                              "consecrate"
      +                            ],
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "key",
      +                          "name"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "secondaries": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "selection": {
      +                          "enum": [
      +                            "punishment",
      +                            "guards",
      +                            "tempting-target",
      +                            "beacon",
      +                            "locate-and-deny",
      +                            "sensor-sweep",
      +                            "consecrate"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 6,
      +                    "type": "array"
      +                  },
      +                  "secondaryDeck": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "selection": {
      +                          "enum": [
      +                            "punishment",
      +                            "guards",
      +                            "tempting-target",
      +                            "beacon",
      +                            "locate-and-deny",
      +                            "sensor-sweep",
      +                            "consecrate"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 60,
      +                    "type": "array"
      +                  },
      +                  "secondaryMode": {
      +                    "enum": [
      +                      "fixed",
      +                      "tactical"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "stratagems": {
      +                    "items": {
      +                      "properties": {
      +                        "cp": {
      +                          "maximum": 6,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "detachment": {
      +                          "maxLength": 249,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "limit": {
      +                          "enum": [
      +                            "phase",
      +                            "turn",
      +                            "battle-round",
      +                            "battle",
      +                            "unlimited"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "phases": {
      +                          "items": {
      +                            "enum": [
      +                              "command",
      +                              "movement",
      +                              "shooting",
      +                              "charge",
      +                              "fight",
      +                              "end"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 6,
      +                          "type": "array"
      +                        },
      +                        "turn": {
      +                          "enum": [
      +                            "your-turn",
      +                            "opponent-turn",
      +                            "either"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "cp",
      +                        "limit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 48,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "stratagems",
      +                  "secondaries",
      +                  "primary",
      +                  "secondaryMode"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "roster": {
      +            "properties": {
      +              "built": {
      +                "properties": {
      +                  "catalogueId": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "detachment": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 80,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachmentIds": {
      +                    "items": {
      +                      "maxLength": 128,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "detachmentPointBudget": {
      +                    "anyOf": [
      +                      {
      +                        "maximum": 3,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachments": {
      +                    "items": {
      +                      "properties": {
      +                        "name": {
      +                          "maxLength": 80,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 3,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "name",
      +                        "points"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "disposition": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 64,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "dispositions": {
      +                    "items": {
      +                      "maxLength": 64,
      +                      "type": "string"
      +                    },
      +                    "maxItems": 16,
      +                    "type": "array"
      +                  },
      +                  "edition": {
      +                    "properties": {
      +                      "description": {
      +                        "maxLength": 240,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "id": {
      +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "slug": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      +                        "type": "string"
      +                      },
      +                      "status": {
      +                        "enum": [
      +                          "preview",
      +                          "released",
      +                          "retired"
      +                        ],
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "id",
      +                      "name",
      +                      "status"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "limit": {
      +                    "maximum": 10000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "picks": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "catalogueId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "choices": {
      +                          "additionalProperties": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 60,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        },
      +                        "note": {
      +                          "maxLength": 500,
      +                          "type": "string"
      +                        },
      +                        "spreads": {
      +                          "additionalProperties": {
      +                            "additionalProperties": {
      +                              "maximum": 60,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            "propertyNames": {
      +                              "maxLength": 64,
      +                              "type": "string"
      +                            },
      +                            "type": "object"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "toggles": {
      +                          "additionalProperties": {
      +                            "maximum": 1,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "entryId"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 100,
      +                    "type": "array"
      +                  },
      +                  "pointsBudget": {
      +                    "maximum": 10000,
      +                    "minimum": 500,
      +                    "type": "integer"
      +                  },
      +                  "revision": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "strategicReserveLimit": {
      +                    "maximum": 5000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "enhancements": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "formationOptions": {
      +                          "items": {
      +                            "enum": [
      +                              "battlefield",
      +                              "strategic-reserves",
      +                              "deep-strike",
      +                              "embarked"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 4,
      +                          "type": "array"
      +                        },
      +                        "group": {
      +                          "enum": [
      +                            "epic-hero",
      +                            "character",
      +                            "battleline",
      +                            "infantry",
      +                            "swarm",
      +                            "mounted",
      +                            "beast",
      +                            "monster",
      +                            "vehicle",
      +                            "drone",
      +                            "transport",
      +                            "fortification",
      +                            "other"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "joined": {
      +                          "items": {
      +                            "properties": {
      +                              "label": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "label",
      +                              "name"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "note": {
      +                          "maxLength": 500,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "maximum": 10000,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "prebattleRules": {
      +                          "items": {
      +                            "enum": [
      +                              "infiltrators",
      +                              "scouts"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 2,
      +                          "type": "array"
      +                        },
      +                        "strategicReserveExempt": {
      +                          "type": "boolean"
      +                        },
      +                        "transport": {
      +                          "type": "boolean"
      +                        },
      +                        "transportRule": {
      +                          "maxLength": 4000,
      +                          "type": "string"
      +                        },
      +                        "upgrades": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "wargear": {
      +                          "items": {
      +                            "properties": {
      +                              "count": {
      +                                "maximum": 100,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "name",
      +                              "count"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 200,
      +                          "type": "array"
      +                        },
      +                        "warlord": {
      +                          "type": "boolean"
      +                        },
      +                        "warlordEligible": {
      +                          "type": "boolean"
      +                        },
      +                        "wounds": {
      +                          "maximum": 100,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "points",
      +                        "models"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 200,
      +                    "type": "array"
      +                  },
      +                  "waivedRules": {
      +                    "items": {
      +                      "enum": [
      +                        "points-limit",
      +                        "detachments",
      +                        "detachment-points",
      +                        "kotc-infantry",
      +                        "kotc-warlord",
      +                        "kotc-epic-heroes",
      +                        "kotc-toughness",
      +                        "kotc-datasheet-copies"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "maxItems": 8,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "catalogueId",
      +                  "revision",
      +                  "limit",
      +                  "detachment",
      +                  "disposition",
      +                  "units"
      +                ],
      +                "type": "object"
      +              },
      +              "id": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "lentBy": {
      +                "properties": {
      +                  "id": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "maxLength": 48,
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "id",
      +                  "name"
      +                ],
      +                "type": "object"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "type": "string"
      +              },
      +              "reminders": {
      +                "items": {
      +                  "properties": {
      +                    "ability": {
      +                      "maxLength": 80,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "description": {
      +                      "maxLength": 10000,
      +                      "type": "string"
      +                    },
      +                    "key": {
      +                      "maxLength": 240,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "timings": {
      +                      "items": {
      +                        "oneOf": [
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "phase-start",
      +                                  "phase-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "enum": [
      +                                  "command",
      +                                  "movement",
      +                                  "shooting",
      +                                  "charge",
      +                                  "fight",
      +                                  "any"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "turn-start",
      +                                  "turn-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "round-start",
      +                                  "round-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "const": "either",
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          }
      +                        ]
      +                      },
      +                      "maxItems": 10,
      +                      "minItems": 1,
      +                      "type": "array"
      +                    },
      +                    "unit": {
      +                      "properties": {
      +                        "index": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "index",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "whileDestroyed": {
      +                      "type": "boolean"
      +                    }
      +                  },
      +                  "required": [
      +                    "key",
      +                    "ability",
      +                    "description",
      +                    "timings"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 100,
      +                "type": "array"
      +              },
      +              "remindersEnabled": {
      +                "type": "boolean"
      +              },
      +              "text": {
      +                "maxLength": 20000,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "text"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "roster"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "destroyed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "set-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "destroyed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-prep",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "primary": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "awards": {
      +                    "items": {
      +                      "properties": {
      +                        "criteria": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 2000,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "cumulative": {
      +                          "type": "boolean"
      +                        },
      +                        "group": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 100,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "max": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 100,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "mode": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 40,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "per": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 200,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "trigger": {
      +                          "properties": {
      +                            "phase": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "playerTurn": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMax": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMin": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "timing": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            }
      +                          },
      +                          "required": [
      +                            "timing",
      +                            "phase",
      +                            "playerTurn",
      +                            "roundMin",
      +                            "roundMax"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "vp": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "vp",
      +                        "per",
      +                        "mode",
      +                        "max",
      +                        "group",
      +                        "cumulative",
      +                        "criteria",
      +                        "trigger"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "key": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "maxLength": 80,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "selection": {
      +                    "enum": [
      +                      "punishment",
      +                      "guards",
      +                      "tempting-target",
      +                      "beacon",
      +                      "locate-and-deny",
      +                      "sensor-sweep",
      +                      "consecrate"
      +                    ],
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "key",
      +                  "name"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 6,
      +            "type": "array"
      +          },
      +          "secondaryDeck": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 60,
      +            "type": "array"
      +          },
      +          "secondaryMode": {
      +            "enum": [
      +              "fixed",
      +              "tactical"
      +            ],
      +            "type": "string"
      +          },
      +          "stratagems": {
      +            "items": {
      +              "properties": {
      +                "cp": {
      +                  "maximum": 6,
      +                  "minimum": 0,
      +                  "type": "integer"
      +                },
      +                "detachment": {
      +                  "maxLength": 249,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "limit": {
      +                  "enum": [
      +                    "phase",
      +                    "turn",
      +                    "battle-round",
      +                    "battle",
      +                    "unlimited"
      +                  ],
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "phases": {
      +                  "items": {
      +                    "enum": [
      +                      "command",
      +                      "movement",
      +                      "shooting",
      +                      "charge",
      +                      "fight",
      +                      "end"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "maxItems": 6,
      +                  "type": "array"
      +                },
      +                "turn": {
      +                  "enum": [
      +                    "your-turn",
      +                    "opponent-turn",
      +                    "either"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name",
      +                "cp",
      +                "limit"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 48,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagems",
      +          "secondaries",
      +          "primary",
      +          "secondaryMode"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "deployed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "deploy-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "deployed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "formation": {
      +            "enum": [
      +              "battlefield",
      +              "strategic-reserves",
      +              "deep-strike",
      +              "embarked"
      +            ],
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-unit-formation",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "transportKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "formation"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-painted",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "painted"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "wound-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "damage-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-deployment",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-battlefield",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "terrainLayoutId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId",
      +          "terrainLayoutId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "use-stratagem",
      +            "type": "string"
      +          },
      +          "missed": {
      +            "properties": {
      +              "phase": {
      +                "enum": [
      +                  "command",
      +                  "movement",
      +                  "shooting",
      +                  "charge",
      +                  "fight",
      +                  "end"
      +                ],
      +                "type": "string"
      +              },
      +              "round": {
      +                "maximum": 5,
      +                "minimum": 1,
      +                "type": "integer"
      +              },
      +              "turn": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "round",
      +              "phase",
      +              "turn"
      +            ],
      +            "type": "object"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "use-new-orders",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          },
      +          "secondaryKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "stratagemKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagemKey",
      +          "secondaryKey",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "score-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "score-settlement",
      +            "type": "string"
      +          },
      +          "missed": {
      +            "properties": {
      +              "phase": {
      +                "enum": [
      +                  "command",
      +                  "movement",
      +                  "shooting",
      +                  "charge",
      +                  "fight",
      +                  "end"
      +                ],
      +                "type": "string"
      +              },
      +              "round": {
      +                "maximum": 5,
      +                "minimum": 1,
      +                "type": "integer"
      +              },
      +              "turn": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "round",
      +              "phase",
      +              "turn"
      +            ],
      +            "type": "object"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "round": {
      +            "maximum": 5,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "scores": {
      +            "items": {
      +              "oneOf": [
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "primary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "final": {
      +                      "properties": {
      +                        "claims": {
      +                          "items": {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "delta": {
      +                          "exclusiveMinimum": 0,
      +                          "maximum": 9007199254740991,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "claims",
      +                        "delta"
      +                      ],
      +                      "type": "object"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "secondary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "key": {
      +                      "maxLength": 64,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "status": {
      +                      "const": "achieved",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "key",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                }
      +              ]
      +            },
      +            "maxItems": 31,
      +            "minItems": 1,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "scores"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-secondary-status",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "status": {
      +            "enum": [
      +              "active",
      +              "achieved",
      +              "discarded",
      +              "returned"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondaries",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 2,
      +            "minItems": 1,
      +            "type": "array"
      +          },
      +          "selected": {
      +            "const": true,
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondaries"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-draw",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-scoring",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "select-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reveal-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "begin-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "adjust-cp",
      +            "type": "string"
      +          },
      +          "missed": {
      +            "properties": {
      +              "phase": {
      +                "enum": [
      +                  "command",
      +                  "movement",
      +                  "shooting",
      +                  "charge",
      +                  "fight",
      +                  "end"
      +                ],
      +                "type": "string"
      +              },
      +              "round": {
      +                "maximum": 5,
      +                "minimum": 1,
      +                "type": "integer"
      +              },
      +              "turn": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "round",
      +              "phase",
      +              "turn"
      +            ],
      +            "type": "object"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "gainCp": {
      +            "type": "boolean"
      +          },
      +          "keys": {
      +            "items": {
      +              "maxLength": 64,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "kind": {
      +            "const": "resolve-tactical-hand",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "category": {
      +            "enum": [
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          },
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "score",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "category",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "correct-player",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "resource": {
      +            "enum": [
      +              "cp",
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "playerId",
      +          "resource",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "settle-opponent-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "request-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "cancel-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "pause-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "resume-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "concededBy": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "end-battle",
      +            "type": "string"
      +          },
      +          "reason": {
      +            "enum": [
      +              "completed",
      +              "finished-early",
      +              "conceded"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reopen-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "add-note",
      +            "type": "string"
      +          },
      +          "text": {
      +            "maxLength": 500,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "text"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "undo",
      +            "type": "string"
      +          },
      +          "target": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "target"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "attach-saved-roster",
      +        "type": "string"
      +      },
      +      "playerId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "rosterId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "rosterId"
      +    ],
      +    "type": "object"
      +  }
      +]
  6. Changed1 schema field changed
    • changedInput schema / properties / command / anyOf
      Previous value: -[
      -  {
      -    "oneOf": [
      -      {
      -        "properties": {
      -          "cardKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "select-mission",
      -            "type": "string"
      -          },
      -          "occurrence": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "selection": {
      -            "oneOf": [
      -              {
      -                "properties": {
      -                  "fallback": {
      -                    "type": "boolean"
      -                  },
      -                  "kind": {
      -                    "const": "punishment",
      -                    "type": "string"
      -                  },
      -                  "qualified": {
      -                    "type": "boolean"
      -                  },
      -                  "unavailable": {
      -                    "const": true,
      -                    "type": "boolean"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "playerId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "rosterSeq": {
      -                          "exclusiveMinimum": 0,
      -                          "maximum": 9007199254740991,
      -                          "type": "integer"
      -                        },
      -                        "unitKey": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "playerId",
      -                        "unitKey",
      -                        "rosterSeq"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "units",
      -                  "fallback",
      -                  "qualified"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "guards": {
      -                    "items": {
      -                      "properties": {
      -                        "objective": {
      -                          "properties": {
      -                            "key": {
      -                              "maxLength": 128,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "name": {
      -                              "maxLength": 80,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "key",
      -                            "name"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "unit": {
      -                          "properties": {
      -                            "playerId": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "rosterSeq": {
      -                              "exclusiveMinimum": 0,
      -                              "maximum": 9007199254740991,
      -                              "type": "integer"
      -                            },
      -                            "unitKey": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "playerId",
      -                            "unitKey",
      -                            "rosterSeq"
      -                          ],
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "objective",
      -                        "unit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "guards",
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "guards"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "kind": {
      -                    "const": "tempting-target",
      -                    "type": "string"
      -                  },
      -                  "noMansLand": {
      -                    "type": "boolean"
      -                  },
      -                  "notHome": {
      -                    "type": "boolean"
      -                  },
      -                  "objective": {
      -                    "properties": {
      -                      "key": {
      -                        "maxLength": 128,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "key",
      -                      "name"
      -                    ],
      -                    "type": "object"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "objective",
      -                  "notHome",
      -                  "noMansLand"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "kind": {
      -                    "const": "beacon",
      -                    "type": "string"
      -                  },
      -                  "note": {
      -                    "maxLength": 200,
      -                    "type": "string"
      -                  },
      -                  "unit": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "playerId": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "rosterSeq": {
      -                            "exclusiveMinimum": 0,
      -                            "maximum": 9007199254740991,
      -                            "type": "integer"
      -                          },
      -                          "unitKey": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "playerId",
      -                          "unitKey",
      -                          "rosterSeq"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "unit",
      -                  "note"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "allEligible": {
      -                    "type": "boolean"
      -                  },
      -                  "areas": {
      -                    "items": {
      -                      "properties": {
      -                        "key": {
      -                          "maxLength": 128,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 5,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "locate-and-deny",
      -                    "type": "string"
      -                  },
      -                  "outsideZone": {
      -                    "type": "boolean"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "areas",
      -                  "outsideZone",
      -                  "allEligible"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "controlled": {
      -                    "type": "boolean"
      -                  },
      -                  "kind": {
      -                    "const": "sensor-sweep",
      -                    "type": "string"
      -                  },
      -                  "marker": {
      -                    "properties": {
      -                      "key": {
      -                        "maxLength": 128,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "playerId": {
      -                        "maxLength": 64,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "key",
      -                      "name",
      -                      "playerId"
      -                    ],
      -                    "type": "object"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "marker",
      -                  "controlled"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "consecrations": {
      -                    "items": {
      -                      "properties": {
      -                        "objective": {
      -                          "properties": {
      -                            "key": {
      -                              "maxLength": 128,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "name": {
      -                              "maxLength": 80,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "key",
      -                            "name"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "unit": {
      -                          "properties": {
      -                            "playerId": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "rosterSeq": {
      -                              "exclusiveMinimum": 0,
      -                              "maximum": 9007199254740991,
      -                              "type": "integer"
      -                            },
      -                            "unitKey": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "playerId",
      -                            "unitKey",
      -                            "rosterSeq"
      -                          ],
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "objective",
      -                        "unit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "consecrate",
      -                    "type": "string"
      -                  },
      -                  "notHome": {
      -                    "type": "boolean"
      -                  },
      -                  "qualified": {
      -                    "type": "boolean"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "consecrations",
      -                  "qualified",
      -                  "notHome"
      -                ],
      -                "type": "object"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "cardKey",
      -          "occurrence",
      -          "selection"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "clockLimitMinutes": {
      -            "anyOf": [
      -              {
      -                "maximum": 300,
      -                "minimum": 5,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "kind": {
      -            "const": "configure-battle",
      -            "type": "string"
      -          },
      -          "limit": {
      -            "anyOf": [
      -              {
      -                "maximum": 10000,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "manual": {
      -            "type": "boolean"
      -          },
      -          "missionPackId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "playerCount": {
      -            "anyOf": [
      -              {
      -                "const": 2,
      -                "type": "number"
      -              },
      -              {
      -                "const": 3,
      -                "type": "number"
      -              },
      -              {
      -                "const": 4,
      -                "type": "number"
      -              }
      -            ]
      -          },
      -          "teamBattle": {
      -            "type": "boolean"
      -          },
      -          "terrainLayoutId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "twistId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "limit",
      -          "missionPackId",
      -          "terrainLayoutId",
      -          "twistId",
      -          "clockLimitMinutes"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reset-setup",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "detach-roster",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "eventToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "lock-league-rosters",
      -            "type": "string"
      -          },
      -          "leagueToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "leagueToken"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-setup-step",
      -            "type": "string"
      -          },
      -          "step": {
      -            "maximum": 9,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "step"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-attacker",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "attackerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-first-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "disposition": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-side-disposition",
      -            "type": "string"
      -          },
      -          "side": {
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "side",
      -          "disposition"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "attach-roster",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "prep": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "primary": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "awards": {
      -                            "items": {
      -                              "properties": {
      -                                "criteria": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 2000,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "cumulative": {
      -                                  "type": "boolean"
      -                                },
      -                                "group": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 100,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "max": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maximum": 100,
      -                                      "minimum": 0,
      -                                      "type": "integer"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "mode": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 40,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "per": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 200,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "trigger": {
      -                                  "properties": {
      -                                    "phase": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "playerTurn": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMax": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMin": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "timing": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    }
      -                                  },
      -                                  "required": [
      -                                    "timing",
      -                                    "phase",
      -                                    "playerTurn",
      -                                    "roundMin",
      -                                    "roundMax"
      -                                  ],
      -                                  "type": "object"
      -                                },
      -                                "vp": {
      -                                  "maximum": 100,
      -                                  "minimum": 0,
      -                                  "type": "integer"
      -                                }
      -                              },
      -                              "required": [
      -                                "vp",
      -                                "per",
      -                                "mode",
      -                                "max",
      -                                "group",
      -                                "cumulative",
      -                                "criteria",
      -                                "trigger"
      -                              ],
      -                              "type": "object"
      -                            },
      -                            "maxItems": 20,
      -                            "type": "array"
      -                          },
      -                          "key": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "name": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "selection": {
      -                            "enum": [
      -                              "punishment",
      -                              "guards",
      -                              "tempting-target",
      -                              "beacon",
      -                              "locate-and-deny",
      -                              "sensor-sweep",
      -                              "consecrate"
      -                            ],
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "key",
      -                          "name"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "secondaries": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "selection": {
      -                          "enum": [
      -                            "punishment",
      -                            "guards",
      -                            "tempting-target",
      -                            "beacon",
      -                            "locate-and-deny",
      -                            "sensor-sweep",
      -                            "consecrate"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 6,
      -                    "type": "array"
      -                  },
      -                  "secondaryDeck": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "selection": {
      -                          "enum": [
      -                            "punishment",
      -                            "guards",
      -                            "tempting-target",
      -                            "beacon",
      -                            "locate-and-deny",
      -                            "sensor-sweep",
      -                            "consecrate"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 60,
      -                    "type": "array"
      -                  },
      -                  "secondaryMode": {
      -                    "enum": [
      -                      "fixed",
      -                      "tactical"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "stratagems": {
      -                    "items": {
      -                      "properties": {
      -                        "cp": {
      -                          "maximum": 6,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "detachment": {
      -                          "maxLength": 249,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "limit": {
      -                          "enum": [
      -                            "phase",
      -                            "turn",
      -                            "battle-round",
      -                            "battle",
      -                            "unlimited"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "phases": {
      -                          "items": {
      -                            "enum": [
      -                              "command",
      -                              "movement",
      -                              "shooting",
      -                              "charge",
      -                              "fight",
      -                              "end"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 6,
      -                          "type": "array"
      -                        },
      -                        "turn": {
      -                          "enum": [
      -                            "your-turn",
      -                            "opponent-turn",
      -                            "either"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "cp",
      -                        "limit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 48,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "stratagems",
      -                  "secondaries",
      -                  "primary",
      -                  "secondaryMode"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "roster": {
      -            "properties": {
      -              "built": {
      -                "properties": {
      -                  "catalogueId": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "detachment": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 80,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachmentIds": {
      -                    "items": {
      -                      "maxLength": 128,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "detachmentPointBudget": {
      -                    "anyOf": [
      -                      {
      -                        "maximum": 3,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachments": {
      -                    "items": {
      -                      "properties": {
      -                        "name": {
      -                          "maxLength": 80,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 3,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "name",
      -                        "points"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "disposition": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 64,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "edition": {
      -                    "properties": {
      -                      "description": {
      -                        "maxLength": 240,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "id": {
      -                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "slug": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      -                        "type": "string"
      -                      },
      -                      "status": {
      -                        "enum": [
      -                          "preview",
      -                          "released",
      -                          "retired"
      -                        ],
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "id",
      -                      "name",
      -                      "status"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "limit": {
      -                    "maximum": 10000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "picks": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "catalogueId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "choices": {
      -                          "additionalProperties": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 60,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        },
      -                        "note": {
      -                          "maxLength": 500,
      -                          "type": "string"
      -                        },
      -                        "spreads": {
      -                          "additionalProperties": {
      -                            "additionalProperties": {
      -                              "maximum": 60,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            "propertyNames": {
      -                              "maxLength": 64,
      -                              "type": "string"
      -                            },
      -                            "type": "object"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "toggles": {
      -                          "additionalProperties": {
      -                            "maximum": 1,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "entryId"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 100,
      -                    "type": "array"
      -                  },
      -                  "pointsBudget": {
      -                    "maximum": 10000,
      -                    "minimum": 500,
      -                    "type": "integer"
      -                  },
      -                  "revision": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "strategicReserveLimit": {
      -                    "maximum": 5000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "enhancements": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "formationOptions": {
      -                          "items": {
      -                            "enum": [
      -                              "battlefield",
      -                              "strategic-reserves",
      -                              "deep-strike",
      -                              "embarked"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 4,
      -                          "type": "array"
      -                        },
      -                        "group": {
      -                          "enum": [
      -                            "epic-hero",
      -                            "character",
      -                            "battleline",
      -                            "infantry",
      -                            "swarm",
      -                            "mounted",
      -                            "beast",
      -                            "monster",
      -                            "vehicle",
      -                            "drone",
      -                            "transport",
      -                            "fortification",
      -                            "other"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "joined": {
      -                          "items": {
      -                            "properties": {
      -                              "label": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "label",
      -                              "name"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "note": {
      -                          "maxLength": 500,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "maximum": 10000,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "prebattleRules": {
      -                          "items": {
      -                            "enum": [
      -                              "infiltrators",
      -                              "scouts"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 2,
      -                          "type": "array"
      -                        },
      -                        "strategicReserveExempt": {
      -                          "type": "boolean"
      -                        },
      -                        "transport": {
      -                          "type": "boolean"
      -                        },
      -                        "transportRule": {
      -                          "maxLength": 4000,
      -                          "type": "string"
      -                        },
      -                        "upgrades": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "wargear": {
      -                          "items": {
      -                            "properties": {
      -                              "count": {
      -                                "maximum": 100,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "name",
      -                              "count"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 200,
      -                          "type": "array"
      -                        },
      -                        "warlord": {
      -                          "type": "boolean"
      -                        },
      -                        "warlordEligible": {
      -                          "type": "boolean"
      -                        },
      -                        "wounds": {
      -                          "maximum": 100,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "points",
      -                        "models"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 200,
      -                    "type": "array"
      -                  },
      -                  "waivedRules": {
      -                    "items": {
      -                      "enum": [
      -                        "points-limit",
      -                        "detachments",
      -                        "detachment-points",
      -                        "kotc-infantry",
      -                        "kotc-warlord",
      -                        "kotc-epic-heroes",
      -                        "kotc-toughness",
      -                        "kotc-datasheet-copies"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "maxItems": 8,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "catalogueId",
      -                  "revision",
      -                  "limit",
      -                  "detachment",
      -                  "disposition",
      -                  "units"
      -                ],
      -                "type": "object"
      -              },
      -              "id": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "type": "string"
      -              },
      -              "reminders": {
      -                "items": {
      -                  "properties": {
      -                    "ability": {
      -                      "maxLength": 80,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "description": {
      -                      "maxLength": 10000,
      -                      "type": "string"
      -                    },
      -                    "key": {
      -                      "maxLength": 240,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "timings": {
      -                      "items": {
      -                        "oneOf": [
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "phase-start",
      -                                  "phase-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "enum": [
      -                                  "command",
      -                                  "movement",
      -                                  "shooting",
      -                                  "charge",
      -                                  "fight",
      -                                  "any"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "turn-start",
      -                                  "turn-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "round-start",
      -                                  "round-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "const": "either",
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          }
      -                        ]
      -                      },
      -                      "maxItems": 10,
      -                      "minItems": 1,
      -                      "type": "array"
      -                    },
      -                    "unit": {
      -                      "properties": {
      -                        "index": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "index",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "whileDestroyed": {
      -                      "type": "boolean"
      -                    }
      -                  },
      -                  "required": [
      -                    "key",
      -                    "ability",
      -                    "description",
      -                    "timings"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 100,
      -                "type": "array"
      -              },
      -              "remindersEnabled": {
      -                "type": "boolean"
      -              },
      -              "text": {
      -                "maxLength": 20000,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "name",
      -              "text"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "roster"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "destroyed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "set-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "destroyed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-prep",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "primary": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "awards": {
      -                    "items": {
      -                      "properties": {
      -                        "criteria": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 2000,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "cumulative": {
      -                          "type": "boolean"
      -                        },
      -                        "group": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 100,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "max": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 100,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "mode": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 40,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "per": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 200,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "trigger": {
      -                          "properties": {
      -                            "phase": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "playerTurn": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMax": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMin": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "timing": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            }
      -                          },
      -                          "required": [
      -                            "timing",
      -                            "phase",
      -                            "playerTurn",
      -                            "roundMin",
      -                            "roundMax"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "vp": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "vp",
      -                        "per",
      -                        "mode",
      -                        "max",
      -                        "group",
      -                        "cumulative",
      -                        "criteria",
      -                        "trigger"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "key": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "name": {
      -                    "maxLength": 80,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "selection": {
      -                    "enum": [
      -                      "punishment",
      -                      "guards",
      -                      "tempting-target",
      -                      "beacon",
      -                      "locate-and-deny",
      -                      "sensor-sweep",
      -                      "consecrate"
      -                    ],
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "key",
      -                  "name"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon",
      -                    "locate-and-deny",
      -                    "sensor-sweep",
      -                    "consecrate"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 6,
      -            "type": "array"
      -          },
      -          "secondaryDeck": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon",
      -                    "locate-and-deny",
      -                    "sensor-sweep",
      -                    "consecrate"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 60,
      -            "type": "array"
      -          },
      -          "secondaryMode": {
      -            "enum": [
      -              "fixed",
      -              "tactical"
      -            ],
      -            "type": "string"
      -          },
      -          "stratagems": {
      -            "items": {
      -              "properties": {
      -                "cp": {
      -                  "maximum": 6,
      -                  "minimum": 0,
      -                  "type": "integer"
      -                },
      -                "detachment": {
      -                  "maxLength": 249,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "limit": {
      -                  "enum": [
      -                    "phase",
      -                    "turn",
      -                    "battle-round",
      -                    "battle",
      -                    "unlimited"
      -                  ],
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "phases": {
      -                  "items": {
      -                    "enum": [
      -                      "command",
      -                      "movement",
      -                      "shooting",
      -                      "charge",
      -                      "fight",
      -                      "end"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "maxItems": 6,
      -                  "type": "array"
      -                },
      -                "turn": {
      -                  "enum": [
      -                    "your-turn",
      -                    "opponent-turn",
      -                    "either"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name",
      -                "cp",
      -                "limit"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 48,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagems",
      -          "secondaries",
      -          "primary",
      -          "secondaryMode"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "deployed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "deploy-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "deployed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "formation": {
      -            "enum": [
      -              "battlefield",
      -              "strategic-reserves",
      -              "deep-strike",
      -              "embarked"
      -            ],
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-unit-formation",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "transportKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "formation"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-painted",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "painted"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "wound-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "damage-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-deployment",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-battlefield",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "terrainLayoutId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId",
      -          "terrainLayoutId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "use-stratagem",
      -            "type": "string"
      -          },
      -          "missed": {
      -            "properties": {
      -              "phase": {
      -                "enum": [
      -                  "command",
      -                  "movement",
      -                  "shooting",
      -                  "charge",
      -                  "fight",
      -                  "end"
      -                ],
      -                "type": "string"
      -              },
      -              "round": {
      -                "maximum": 5,
      -                "minimum": 1,
      -                "type": "integer"
      -              },
      -              "turn": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "round",
      -              "phase",
      -              "turn"
      -            ],
      -            "type": "object"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "use-new-orders",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon",
      -                  "locate-and-deny",
      -                  "sensor-sweep",
      -                  "consecrate"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          },
      -          "secondaryKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "stratagemKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagemKey",
      -          "secondaryKey",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "score-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "score-settlement",
      -            "type": "string"
      -          },
      -          "missed": {
      -            "properties": {
      -              "phase": {
      -                "enum": [
      -                  "command",
      -                  "movement",
      -                  "shooting",
      -                  "charge",
      -                  "fight",
      -                  "end"
      -                ],
      -                "type": "string"
      -              },
      -              "round": {
      -                "maximum": 5,
      -                "minimum": 1,
      -                "type": "integer"
      -              },
      -              "turn": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "round",
      -              "phase",
      -              "turn"
      -            ],
      -            "type": "object"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "round": {
      -            "maximum": 5,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "scores": {
      -            "items": {
      -              "oneOf": [
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "primary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "final": {
      -                      "properties": {
      -                        "claims": {
      -                          "items": {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "delta": {
      -                          "exclusiveMinimum": 0,
      -                          "maximum": 9007199254740991,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "claims",
      -                        "delta"
      -                      ],
      -                      "type": "object"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "secondary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "key": {
      -                      "maxLength": 64,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "status": {
      -                      "const": "achieved",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "key",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                }
      -              ]
      -            },
      -            "maxItems": 31,
      -            "minItems": 1,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "scores"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-secondary-status",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "status": {
      -            "enum": [
      -              "active",
      -              "achieved",
      -              "discarded",
      -              "returned"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "status"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon",
      -                  "locate-and-deny",
      -                  "sensor-sweep",
      -                  "consecrate"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondaries",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon",
      -                    "locate-and-deny",
      -                    "sensor-sweep",
      -                    "consecrate"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 2,
      -            "minItems": 1,
      -            "type": "array"
      -          },
      -          "selected": {
      -            "const": true,
      -            "type": "boolean"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondaries"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-draw",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-scoring",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "select-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon",
      -                  "locate-and-deny",
      -                  "sensor-sweep",
      -                  "consecrate"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reveal-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "begin-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "adjust-cp",
      -            "type": "string"
      -          },
      -          "missed": {
      -            "properties": {
      -              "phase": {
      -                "enum": [
      -                  "command",
      -                  "movement",
      -                  "shooting",
      -                  "charge",
      -                  "fight",
      -                  "end"
      -                ],
      -                "type": "string"
      -              },
      -              "round": {
      -                "maximum": 5,
      -                "minimum": 1,
      -                "type": "integer"
      -              },
      -              "turn": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "round",
      -              "phase",
      -              "turn"
      -            ],
      -            "type": "object"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "gainCp": {
      -            "type": "boolean"
      -          },
      -          "keys": {
      -            "items": {
      -              "maxLength": 64,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "kind": {
      -            "const": "resolve-tactical-hand",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "category": {
      -            "enum": [
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          },
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "score",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "category",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "correct-player",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "resource": {
      -            "enum": [
      -              "cp",
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "playerId",
      -          "resource",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "settle-opponent-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "request-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "cancel-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "pause-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "resume-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "concededBy": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "end-battle",
      -            "type": "string"
      -          },
      -          "reason": {
      -            "enum": [
      -              "completed",
      -              "finished-early",
      -              "conceded"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reopen-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "add-note",
      -            "type": "string"
      -          },
      -          "text": {
      -            "maxLength": 500,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "text"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "undo",
      -            "type": "string"
      -          },
      -          "target": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "target"
      -        ],
      -        "type": "object"
      -      }
      -    ]
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "attach-saved-roster",
      -        "type": "string"
      -      },
      -      "playerId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "rosterId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "rosterId"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "oneOf": [
      +      {
      +        "properties": {
      +          "cardKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "select-mission",
      +            "type": "string"
      +          },
      +          "occurrence": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "selection": {
      +            "oneOf": [
      +              {
      +                "properties": {
      +                  "fallback": {
      +                    "type": "boolean"
      +                  },
      +                  "kind": {
      +                    "const": "punishment",
      +                    "type": "string"
      +                  },
      +                  "qualified": {
      +                    "type": "boolean"
      +                  },
      +                  "unavailable": {
      +                    "const": true,
      +                    "type": "boolean"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "playerId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "rosterSeq": {
      +                          "exclusiveMinimum": 0,
      +                          "maximum": 9007199254740991,
      +                          "type": "integer"
      +                        },
      +                        "unitKey": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "playerId",
      +                        "unitKey",
      +                        "rosterSeq"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "units",
      +                  "fallback",
      +                  "qualified"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "guards": {
      +                    "items": {
      +                      "properties": {
      +                        "objective": {
      +                          "properties": {
      +                            "key": {
      +                              "maxLength": 128,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "name": {
      +                              "maxLength": 80,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "key",
      +                            "name"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "unit": {
      +                          "properties": {
      +                            "playerId": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "rosterSeq": {
      +                              "exclusiveMinimum": 0,
      +                              "maximum": 9007199254740991,
      +                              "type": "integer"
      +                            },
      +                            "unitKey": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "playerId",
      +                            "unitKey",
      +                            "rosterSeq"
      +                          ],
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "objective",
      +                        "unit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "guards",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "guards"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "kind": {
      +                    "const": "tempting-target",
      +                    "type": "string"
      +                  },
      +                  "noMansLand": {
      +                    "type": "boolean"
      +                  },
      +                  "notHome": {
      +                    "type": "boolean"
      +                  },
      +                  "objective": {
      +                    "properties": {
      +                      "key": {
      +                        "maxLength": 128,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "key",
      +                      "name"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "objective",
      +                  "notHome",
      +                  "noMansLand"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "kind": {
      +                    "const": "beacon",
      +                    "type": "string"
      +                  },
      +                  "note": {
      +                    "maxLength": 200,
      +                    "type": "string"
      +                  },
      +                  "unit": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "playerId": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "rosterSeq": {
      +                            "exclusiveMinimum": 0,
      +                            "maximum": 9007199254740991,
      +                            "type": "integer"
      +                          },
      +                          "unitKey": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "playerId",
      +                          "unitKey",
      +                          "rosterSeq"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "unit",
      +                  "note"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "allEligible": {
      +                    "type": "boolean"
      +                  },
      +                  "areas": {
      +                    "items": {
      +                      "properties": {
      +                        "key": {
      +                          "maxLength": 128,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 5,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "locate-and-deny",
      +                    "type": "string"
      +                  },
      +                  "outsideZone": {
      +                    "type": "boolean"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "areas",
      +                  "outsideZone",
      +                  "allEligible"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "controlled": {
      +                    "type": "boolean"
      +                  },
      +                  "kind": {
      +                    "const": "sensor-sweep",
      +                    "type": "string"
      +                  },
      +                  "marker": {
      +                    "properties": {
      +                      "key": {
      +                        "maxLength": 128,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "playerId": {
      +                        "maxLength": 64,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "key",
      +                      "name",
      +                      "playerId"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "marker",
      +                  "controlled"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "consecrations": {
      +                    "items": {
      +                      "properties": {
      +                        "objective": {
      +                          "properties": {
      +                            "key": {
      +                              "maxLength": 128,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "name": {
      +                              "maxLength": 80,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "key",
      +                            "name"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "unit": {
      +                          "properties": {
      +                            "playerId": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "rosterSeq": {
      +                              "exclusiveMinimum": 0,
      +                              "maximum": 9007199254740991,
      +                              "type": "integer"
      +                            },
      +                            "unitKey": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "playerId",
      +                            "unitKey",
      +                            "rosterSeq"
      +                          ],
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "objective",
      +                        "unit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "consecrate",
      +                    "type": "string"
      +                  },
      +                  "notHome": {
      +                    "type": "boolean"
      +                  },
      +                  "qualified": {
      +                    "type": "boolean"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "consecrations",
      +                  "qualified",
      +                  "notHome"
      +                ],
      +                "type": "object"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "cardKey",
      +          "occurrence",
      +          "selection"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "clockLimitMinutes": {
      +            "anyOf": [
      +              {
      +                "maximum": 300,
      +                "minimum": 5,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "kind": {
      +            "const": "configure-battle",
      +            "type": "string"
      +          },
      +          "limit": {
      +            "anyOf": [
      +              {
      +                "maximum": 10000,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "manual": {
      +            "type": "boolean"
      +          },
      +          "missionPackId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "playerCount": {
      +            "anyOf": [
      +              {
      +                "const": 2,
      +                "type": "number"
      +              },
      +              {
      +                "const": 3,
      +                "type": "number"
      +              },
      +              {
      +                "const": 4,
      +                "type": "number"
      +              }
      +            ]
      +          },
      +          "teamBattle": {
      +            "type": "boolean"
      +          },
      +          "terrainLayoutId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "twistId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "limit",
      +          "missionPackId",
      +          "terrainLayoutId",
      +          "twistId",
      +          "clockLimitMinutes"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reset-setup",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "detach-roster",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "eventToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "lock-league-rosters",
      +            "type": "string"
      +          },
      +          "leagueToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "leagueToken"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-setup-step",
      +            "type": "string"
      +          },
      +          "step": {
      +            "maximum": 9,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "step"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-attacker",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "attackerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-first-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "disposition": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-side-disposition",
      +            "type": "string"
      +          },
      +          "side": {
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "side",
      +          "disposition"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "attach-roster",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "prep": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "primary": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "awards": {
      +                            "items": {
      +                              "properties": {
      +                                "criteria": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 2000,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "cumulative": {
      +                                  "type": "boolean"
      +                                },
      +                                "group": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 100,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "max": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maximum": 100,
      +                                      "minimum": 0,
      +                                      "type": "integer"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "mode": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 40,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "per": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 200,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "trigger": {
      +                                  "properties": {
      +                                    "phase": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "playerTurn": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMax": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMin": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "timing": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    }
      +                                  },
      +                                  "required": [
      +                                    "timing",
      +                                    "phase",
      +                                    "playerTurn",
      +                                    "roundMin",
      +                                    "roundMax"
      +                                  ],
      +                                  "type": "object"
      +                                },
      +                                "vp": {
      +                                  "maximum": 100,
      +                                  "minimum": 0,
      +                                  "type": "integer"
      +                                }
      +                              },
      +                              "required": [
      +                                "vp",
      +                                "per",
      +                                "mode",
      +                                "max",
      +                                "group",
      +                                "cumulative",
      +                                "criteria",
      +                                "trigger"
      +                              ],
      +                              "type": "object"
      +                            },
      +                            "maxItems": 20,
      +                            "type": "array"
      +                          },
      +                          "key": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "name": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "selection": {
      +                            "enum": [
      +                              "punishment",
      +                              "guards",
      +                              "tempting-target",
      +                              "beacon",
      +                              "locate-and-deny",
      +                              "sensor-sweep",
      +                              "consecrate"
      +                            ],
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "key",
      +                          "name"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "secondaries": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "selection": {
      +                          "enum": [
      +                            "punishment",
      +                            "guards",
      +                            "tempting-target",
      +                            "beacon",
      +                            "locate-and-deny",
      +                            "sensor-sweep",
      +                            "consecrate"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 6,
      +                    "type": "array"
      +                  },
      +                  "secondaryDeck": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "selection": {
      +                          "enum": [
      +                            "punishment",
      +                            "guards",
      +                            "tempting-target",
      +                            "beacon",
      +                            "locate-and-deny",
      +                            "sensor-sweep",
      +                            "consecrate"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 60,
      +                    "type": "array"
      +                  },
      +                  "secondaryMode": {
      +                    "enum": [
      +                      "fixed",
      +                      "tactical"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "stratagems": {
      +                    "items": {
      +                      "properties": {
      +                        "cp": {
      +                          "maximum": 6,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "detachment": {
      +                          "maxLength": 249,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "limit": {
      +                          "enum": [
      +                            "phase",
      +                            "turn",
      +                            "battle-round",
      +                            "battle",
      +                            "unlimited"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "phases": {
      +                          "items": {
      +                            "enum": [
      +                              "command",
      +                              "movement",
      +                              "shooting",
      +                              "charge",
      +                              "fight",
      +                              "end"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 6,
      +                          "type": "array"
      +                        },
      +                        "turn": {
      +                          "enum": [
      +                            "your-turn",
      +                            "opponent-turn",
      +                            "either"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "cp",
      +                        "limit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 48,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "stratagems",
      +                  "secondaries",
      +                  "primary",
      +                  "secondaryMode"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "roster": {
      +            "properties": {
      +              "built": {
      +                "properties": {
      +                  "catalogueId": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "detachment": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 80,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachmentIds": {
      +                    "items": {
      +                      "maxLength": 128,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "detachmentPointBudget": {
      +                    "anyOf": [
      +                      {
      +                        "maximum": 3,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachments": {
      +                    "items": {
      +                      "properties": {
      +                        "name": {
      +                          "maxLength": 80,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 3,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "name",
      +                        "points"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "disposition": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 64,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "edition": {
      +                    "properties": {
      +                      "description": {
      +                        "maxLength": 240,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "id": {
      +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "slug": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      +                        "type": "string"
      +                      },
      +                      "status": {
      +                        "enum": [
      +                          "preview",
      +                          "released",
      +                          "retired"
      +                        ],
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "id",
      +                      "name",
      +                      "status"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "limit": {
      +                    "maximum": 10000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "picks": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "catalogueId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "choices": {
      +                          "additionalProperties": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 60,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        },
      +                        "note": {
      +                          "maxLength": 500,
      +                          "type": "string"
      +                        },
      +                        "spreads": {
      +                          "additionalProperties": {
      +                            "additionalProperties": {
      +                              "maximum": 60,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            "propertyNames": {
      +                              "maxLength": 64,
      +                              "type": "string"
      +                            },
      +                            "type": "object"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "toggles": {
      +                          "additionalProperties": {
      +                            "maximum": 1,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "entryId"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 100,
      +                    "type": "array"
      +                  },
      +                  "pointsBudget": {
      +                    "maximum": 10000,
      +                    "minimum": 500,
      +                    "type": "integer"
      +                  },
      +                  "revision": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "strategicReserveLimit": {
      +                    "maximum": 5000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "enhancements": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "formationOptions": {
      +                          "items": {
      +                            "enum": [
      +                              "battlefield",
      +                              "strategic-reserves",
      +                              "deep-strike",
      +                              "embarked"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 4,
      +                          "type": "array"
      +                        },
      +                        "group": {
      +                          "enum": [
      +                            "epic-hero",
      +                            "character",
      +                            "battleline",
      +                            "infantry",
      +                            "swarm",
      +                            "mounted",
      +                            "beast",
      +                            "monster",
      +                            "vehicle",
      +                            "drone",
      +                            "transport",
      +                            "fortification",
      +                            "other"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "joined": {
      +                          "items": {
      +                            "properties": {
      +                              "label": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "label",
      +                              "name"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "note": {
      +                          "maxLength": 500,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "maximum": 10000,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "prebattleRules": {
      +                          "items": {
      +                            "enum": [
      +                              "infiltrators",
      +                              "scouts"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 2,
      +                          "type": "array"
      +                        },
      +                        "strategicReserveExempt": {
      +                          "type": "boolean"
      +                        },
      +                        "transport": {
      +                          "type": "boolean"
      +                        },
      +                        "transportRule": {
      +                          "maxLength": 4000,
      +                          "type": "string"
      +                        },
      +                        "upgrades": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "wargear": {
      +                          "items": {
      +                            "properties": {
      +                              "count": {
      +                                "maximum": 100,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "name",
      +                              "count"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 200,
      +                          "type": "array"
      +                        },
      +                        "warlord": {
      +                          "type": "boolean"
      +                        },
      +                        "warlordEligible": {
      +                          "type": "boolean"
      +                        },
      +                        "wounds": {
      +                          "maximum": 100,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "points",
      +                        "models"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 200,
      +                    "type": "array"
      +                  },
      +                  "waivedRules": {
      +                    "items": {
      +                      "enum": [
      +                        "points-limit",
      +                        "detachments",
      +                        "detachment-points",
      +                        "kotc-infantry",
      +                        "kotc-warlord",
      +                        "kotc-epic-heroes",
      +                        "kotc-toughness",
      +                        "kotc-datasheet-copies"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "maxItems": 8,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "catalogueId",
      +                  "revision",
      +                  "limit",
      +                  "detachment",
      +                  "disposition",
      +                  "units"
      +                ],
      +                "type": "object"
      +              },
      +              "id": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "lentBy": {
      +                "properties": {
      +                  "id": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "maxLength": 48,
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "id",
      +                  "name"
      +                ],
      +                "type": "object"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "type": "string"
      +              },
      +              "reminders": {
      +                "items": {
      +                  "properties": {
      +                    "ability": {
      +                      "maxLength": 80,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "description": {
      +                      "maxLength": 10000,
      +                      "type": "string"
      +                    },
      +                    "key": {
      +                      "maxLength": 240,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "timings": {
      +                      "items": {
      +                        "oneOf": [
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "phase-start",
      +                                  "phase-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "enum": [
      +                                  "command",
      +                                  "movement",
      +                                  "shooting",
      +                                  "charge",
      +                                  "fight",
      +                                  "any"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "turn-start",
      +                                  "turn-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "round-start",
      +                                  "round-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "const": "either",
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          }
      +                        ]
      +                      },
      +                      "maxItems": 10,
      +                      "minItems": 1,
      +                      "type": "array"
      +                    },
      +                    "unit": {
      +                      "properties": {
      +                        "index": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "index",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "whileDestroyed": {
      +                      "type": "boolean"
      +                    }
      +                  },
      +                  "required": [
      +                    "key",
      +                    "ability",
      +                    "description",
      +                    "timings"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 100,
      +                "type": "array"
      +              },
      +              "remindersEnabled": {
      +                "type": "boolean"
      +              },
      +              "text": {
      +                "maxLength": 20000,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "text"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "roster"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "destroyed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "set-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "destroyed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-prep",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "primary": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "awards": {
      +                    "items": {
      +                      "properties": {
      +                        "criteria": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 2000,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "cumulative": {
      +                          "type": "boolean"
      +                        },
      +                        "group": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 100,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "max": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 100,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "mode": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 40,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "per": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 200,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "trigger": {
      +                          "properties": {
      +                            "phase": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "playerTurn": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMax": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMin": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "timing": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            }
      +                          },
      +                          "required": [
      +                            "timing",
      +                            "phase",
      +                            "playerTurn",
      +                            "roundMin",
      +                            "roundMax"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "vp": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "vp",
      +                        "per",
      +                        "mode",
      +                        "max",
      +                        "group",
      +                        "cumulative",
      +                        "criteria",
      +                        "trigger"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "key": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "maxLength": 80,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "selection": {
      +                    "enum": [
      +                      "punishment",
      +                      "guards",
      +                      "tempting-target",
      +                      "beacon",
      +                      "locate-and-deny",
      +                      "sensor-sweep",
      +                      "consecrate"
      +                    ],
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "key",
      +                  "name"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 6,
      +            "type": "array"
      +          },
      +          "secondaryDeck": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 60,
      +            "type": "array"
      +          },
      +          "secondaryMode": {
      +            "enum": [
      +              "fixed",
      +              "tactical"
      +            ],
      +            "type": "string"
      +          },
      +          "stratagems": {
      +            "items": {
      +              "properties": {
      +                "cp": {
      +                  "maximum": 6,
      +                  "minimum": 0,
      +                  "type": "integer"
      +                },
      +                "detachment": {
      +                  "maxLength": 249,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "limit": {
      +                  "enum": [
      +                    "phase",
      +                    "turn",
      +                    "battle-round",
      +                    "battle",
      +                    "unlimited"
      +                  ],
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "phases": {
      +                  "items": {
      +                    "enum": [
      +                      "command",
      +                      "movement",
      +                      "shooting",
      +                      "charge",
      +                      "fight",
      +                      "end"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "maxItems": 6,
      +                  "type": "array"
      +                },
      +                "turn": {
      +                  "enum": [
      +                    "your-turn",
      +                    "opponent-turn",
      +                    "either"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name",
      +                "cp",
      +                "limit"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 48,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagems",
      +          "secondaries",
      +          "primary",
      +          "secondaryMode"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "deployed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "deploy-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "deployed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "formation": {
      +            "enum": [
      +              "battlefield",
      +              "strategic-reserves",
      +              "deep-strike",
      +              "embarked"
      +            ],
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-unit-formation",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "transportKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "formation"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-painted",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "painted"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "wound-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "damage-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-deployment",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-battlefield",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "terrainLayoutId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId",
      +          "terrainLayoutId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "use-stratagem",
      +            "type": "string"
      +          },
      +          "missed": {
      +            "properties": {
      +              "phase": {
      +                "enum": [
      +                  "command",
      +                  "movement",
      +                  "shooting",
      +                  "charge",
      +                  "fight",
      +                  "end"
      +                ],
      +                "type": "string"
      +              },
      +              "round": {
      +                "maximum": 5,
      +                "minimum": 1,
      +                "type": "integer"
      +              },
      +              "turn": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "round",
      +              "phase",
      +              "turn"
      +            ],
      +            "type": "object"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "use-new-orders",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          },
      +          "secondaryKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "stratagemKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagemKey",
      +          "secondaryKey",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "score-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "score-settlement",
      +            "type": "string"
      +          },
      +          "missed": {
      +            "properties": {
      +              "phase": {
      +                "enum": [
      +                  "command",
      +                  "movement",
      +                  "shooting",
      +                  "charge",
      +                  "fight",
      +                  "end"
      +                ],
      +                "type": "string"
      +              },
      +              "round": {
      +                "maximum": 5,
      +                "minimum": 1,
      +                "type": "integer"
      +              },
      +              "turn": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "round",
      +              "phase",
      +              "turn"
      +            ],
      +            "type": "object"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "round": {
      +            "maximum": 5,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "scores": {
      +            "items": {
      +              "oneOf": [
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "primary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "final": {
      +                      "properties": {
      +                        "claims": {
      +                          "items": {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "delta": {
      +                          "exclusiveMinimum": 0,
      +                          "maximum": 9007199254740991,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "claims",
      +                        "delta"
      +                      ],
      +                      "type": "object"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "secondary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "key": {
      +                      "maxLength": 64,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "status": {
      +                      "const": "achieved",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "key",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                }
      +              ]
      +            },
      +            "maxItems": 31,
      +            "minItems": 1,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "scores"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-secondary-status",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "status": {
      +            "enum": [
      +              "active",
      +              "achieved",
      +              "discarded",
      +              "returned"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondaries",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 2,
      +            "minItems": 1,
      +            "type": "array"
      +          },
      +          "selected": {
      +            "const": true,
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondaries"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-draw",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-scoring",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "select-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reveal-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "begin-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "adjust-cp",
      +            "type": "string"
      +          },
      +          "missed": {
      +            "properties": {
      +              "phase": {
      +                "enum": [
      +                  "command",
      +                  "movement",
      +                  "shooting",
      +                  "charge",
      +                  "fight",
      +                  "end"
      +                ],
      +                "type": "string"
      +              },
      +              "round": {
      +                "maximum": 5,
      +                "minimum": 1,
      +                "type": "integer"
      +              },
      +              "turn": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "round",
      +              "phase",
      +              "turn"
      +            ],
      +            "type": "object"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "gainCp": {
      +            "type": "boolean"
      +          },
      +          "keys": {
      +            "items": {
      +              "maxLength": 64,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "kind": {
      +            "const": "resolve-tactical-hand",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "category": {
      +            "enum": [
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          },
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "score",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "category",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "correct-player",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "resource": {
      +            "enum": [
      +              "cp",
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "playerId",
      +          "resource",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "settle-opponent-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "request-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "cancel-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "pause-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "resume-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "concededBy": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "end-battle",
      +            "type": "string"
      +          },
      +          "reason": {
      +            "enum": [
      +              "completed",
      +              "finished-early",
      +              "conceded"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reopen-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "add-note",
      +            "type": "string"
      +          },
      +          "text": {
      +            "maxLength": 500,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "text"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "undo",
      +            "type": "string"
      +          },
      +          "target": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "target"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "attach-saved-roster",
      +        "type": "string"
      +      },
      +      "playerId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "rosterId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "rosterId"
      +    ],
      +    "type": "object"
      +  }
      +]
  7. Changed1 schema field changed
    • changedInput schema / properties / command / anyOf
      Previous value: -[
      -  {
      -    "oneOf": [
      -      {
      -        "properties": {
      -          "cardKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "select-mission",
      -            "type": "string"
      -          },
      -          "occurrence": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "selection": {
      -            "oneOf": [
      -              {
      -                "properties": {
      -                  "fallback": {
      -                    "type": "boolean"
      -                  },
      -                  "kind": {
      -                    "const": "punishment",
      -                    "type": "string"
      -                  },
      -                  "qualified": {
      -                    "type": "boolean"
      -                  },
      -                  "unavailable": {
      -                    "const": true,
      -                    "type": "boolean"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "playerId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "rosterSeq": {
      -                          "exclusiveMinimum": 0,
      -                          "maximum": 9007199254740991,
      -                          "type": "integer"
      -                        },
      -                        "unitKey": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "playerId",
      -                        "unitKey",
      -                        "rosterSeq"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "units",
      -                  "fallback",
      -                  "qualified"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "guards": {
      -                    "items": {
      -                      "properties": {
      -                        "objective": {
      -                          "properties": {
      -                            "key": {
      -                              "maxLength": 128,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "name": {
      -                              "maxLength": 80,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "key",
      -                            "name"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "unit": {
      -                          "properties": {
      -                            "playerId": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "rosterSeq": {
      -                              "exclusiveMinimum": 0,
      -                              "maximum": 9007199254740991,
      -                              "type": "integer"
      -                            },
      -                            "unitKey": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "playerId",
      -                            "unitKey",
      -                            "rosterSeq"
      -                          ],
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "objective",
      -                        "unit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "guards",
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "guards"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "kind": {
      -                    "const": "tempting-target",
      -                    "type": "string"
      -                  },
      -                  "noMansLand": {
      -                    "type": "boolean"
      -                  },
      -                  "notHome": {
      -                    "type": "boolean"
      -                  },
      -                  "objective": {
      -                    "properties": {
      -                      "key": {
      -                        "maxLength": 128,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "key",
      -                      "name"
      -                    ],
      -                    "type": "object"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "objective",
      -                  "notHome",
      -                  "noMansLand"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "kind": {
      -                    "const": "beacon",
      -                    "type": "string"
      -                  },
      -                  "note": {
      -                    "maxLength": 200,
      -                    "type": "string"
      -                  },
      -                  "unit": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "playerId": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "rosterSeq": {
      -                            "exclusiveMinimum": 0,
      -                            "maximum": 9007199254740991,
      -                            "type": "integer"
      -                          },
      -                          "unitKey": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "playerId",
      -                          "unitKey",
      -                          "rosterSeq"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "unit",
      -                  "note"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "allEligible": {
      -                    "type": "boolean"
      -                  },
      -                  "areas": {
      -                    "items": {
      -                      "properties": {
      -                        "key": {
      -                          "maxLength": 128,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 5,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "locate-and-deny",
      -                    "type": "string"
      -                  },
      -                  "outsideZone": {
      -                    "type": "boolean"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "areas",
      -                  "outsideZone",
      -                  "allEligible"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "controlled": {
      -                    "type": "boolean"
      -                  },
      -                  "kind": {
      -                    "const": "sensor-sweep",
      -                    "type": "string"
      -                  },
      -                  "marker": {
      -                    "properties": {
      -                      "key": {
      -                        "maxLength": 128,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "playerId": {
      -                        "maxLength": 64,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "key",
      -                      "name",
      -                      "playerId"
      -                    ],
      -                    "type": "object"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "marker",
      -                  "controlled"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "consecrations": {
      -                    "items": {
      -                      "properties": {
      -                        "objective": {
      -                          "properties": {
      -                            "key": {
      -                              "maxLength": 128,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "name": {
      -                              "maxLength": 80,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "key",
      -                            "name"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "unit": {
      -                          "properties": {
      -                            "playerId": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "rosterSeq": {
      -                              "exclusiveMinimum": 0,
      -                              "maximum": 9007199254740991,
      -                              "type": "integer"
      -                            },
      -                            "unitKey": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "playerId",
      -                            "unitKey",
      -                            "rosterSeq"
      -                          ],
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "objective",
      -                        "unit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "consecrate",
      -                    "type": "string"
      -                  },
      -                  "notHome": {
      -                    "type": "boolean"
      -                  },
      -                  "qualified": {
      -                    "type": "boolean"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "consecrations",
      -                  "qualified",
      -                  "notHome"
      -                ],
      -                "type": "object"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "cardKey",
      -          "occurrence",
      -          "selection"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "clockLimitMinutes": {
      -            "anyOf": [
      -              {
      -                "maximum": 300,
      -                "minimum": 5,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "kind": {
      -            "const": "configure-battle",
      -            "type": "string"
      -          },
      -          "limit": {
      -            "anyOf": [
      -              {
      -                "maximum": 10000,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "missionPackId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "playerCount": {
      -            "anyOf": [
      -              {
      -                "const": 2,
      -                "type": "number"
      -              },
      -              {
      -                "const": 3,
      -                "type": "number"
      -              },
      -              {
      -                "const": 4,
      -                "type": "number"
      -              }
      -            ]
      -          },
      -          "teamBattle": {
      -            "type": "boolean"
      -          },
      -          "terrainLayoutId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "twistId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "limit",
      -          "missionPackId",
      -          "terrainLayoutId",
      -          "twistId",
      -          "clockLimitMinutes"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reset-setup",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "detach-roster",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "eventToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "lock-league-rosters",
      -            "type": "string"
      -          },
      -          "leagueToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "leagueToken"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-setup-step",
      -            "type": "string"
      -          },
      -          "step": {
      -            "maximum": 9,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "step"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-attacker",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "attackerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-first-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "disposition": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-side-disposition",
      -            "type": "string"
      -          },
      -          "side": {
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "side",
      -          "disposition"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "attach-roster",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "prep": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "primary": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "awards": {
      -                            "items": {
      -                              "properties": {
      -                                "criteria": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 2000,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "cumulative": {
      -                                  "type": "boolean"
      -                                },
      -                                "group": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 100,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "max": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maximum": 100,
      -                                      "minimum": 0,
      -                                      "type": "integer"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "mode": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 40,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "per": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 200,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "trigger": {
      -                                  "properties": {
      -                                    "phase": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "playerTurn": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMax": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMin": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "timing": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    }
      -                                  },
      -                                  "required": [
      -                                    "timing",
      -                                    "phase",
      -                                    "playerTurn",
      -                                    "roundMin",
      -                                    "roundMax"
      -                                  ],
      -                                  "type": "object"
      -                                },
      -                                "vp": {
      -                                  "maximum": 100,
      -                                  "minimum": 0,
      -                                  "type": "integer"
      -                                }
      -                              },
      -                              "required": [
      -                                "vp",
      -                                "per",
      -                                "mode",
      -                                "max",
      -                                "group",
      -                                "cumulative",
      -                                "criteria",
      -                                "trigger"
      -                              ],
      -                              "type": "object"
      -                            },
      -                            "maxItems": 20,
      -                            "type": "array"
      -                          },
      -                          "key": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "name": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "selection": {
      -                            "enum": [
      -                              "punishment",
      -                              "guards",
      -                              "tempting-target",
      -                              "beacon",
      -                              "locate-and-deny",
      -                              "sensor-sweep",
      -                              "consecrate"
      -                            ],
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "key",
      -                          "name"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "secondaries": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "selection": {
      -                          "enum": [
      -                            "punishment",
      -                            "guards",
      -                            "tempting-target",
      -                            "beacon",
      -                            "locate-and-deny",
      -                            "sensor-sweep",
      -                            "consecrate"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 6,
      -                    "type": "array"
      -                  },
      -                  "secondaryDeck": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "selection": {
      -                          "enum": [
      -                            "punishment",
      -                            "guards",
      -                            "tempting-target",
      -                            "beacon",
      -                            "locate-and-deny",
      -                            "sensor-sweep",
      -                            "consecrate"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 60,
      -                    "type": "array"
      -                  },
      -                  "secondaryMode": {
      -                    "enum": [
      -                      "fixed",
      -                      "tactical"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "stratagems": {
      -                    "items": {
      -                      "properties": {
      -                        "cp": {
      -                          "maximum": 6,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "detachment": {
      -                          "maxLength": 249,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "limit": {
      -                          "enum": [
      -                            "phase",
      -                            "turn",
      -                            "battle-round",
      -                            "battle",
      -                            "unlimited"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "phases": {
      -                          "items": {
      -                            "enum": [
      -                              "command",
      -                              "movement",
      -                              "shooting",
      -                              "charge",
      -                              "fight",
      -                              "end"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 6,
      -                          "type": "array"
      -                        },
      -                        "turn": {
      -                          "enum": [
      -                            "your-turn",
      -                            "opponent-turn",
      -                            "either"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "cp",
      -                        "limit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 48,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "stratagems",
      -                  "secondaries",
      -                  "primary",
      -                  "secondaryMode"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "roster": {
      -            "properties": {
      -              "built": {
      -                "properties": {
      -                  "catalogueId": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "detachment": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 80,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachmentIds": {
      -                    "items": {
      -                      "maxLength": 128,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "detachmentPointBudget": {
      -                    "anyOf": [
      -                      {
      -                        "maximum": 3,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachments": {
      -                    "items": {
      -                      "properties": {
      -                        "name": {
      -                          "maxLength": 80,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 3,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "name",
      -                        "points"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "disposition": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 64,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "edition": {
      -                    "properties": {
      -                      "description": {
      -                        "maxLength": 240,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "id": {
      -                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "slug": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      -                        "type": "string"
      -                      },
      -                      "status": {
      -                        "enum": [
      -                          "preview",
      -                          "released",
      -                          "retired"
      -                        ],
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "id",
      -                      "name",
      -                      "status"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "limit": {
      -                    "maximum": 10000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "picks": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "catalogueId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "choices": {
      -                          "additionalProperties": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 60,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        },
      -                        "nickname": {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        "note": {
      -                          "maxLength": 500,
      -                          "type": "string"
      -                        },
      -                        "spreads": {
      -                          "additionalProperties": {
      -                            "additionalProperties": {
      -                              "maximum": 60,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            "propertyNames": {
      -                              "maxLength": 64,
      -                              "type": "string"
      -                            },
      -                            "type": "object"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "toggles": {
      -                          "additionalProperties": {
      -                            "maximum": 1,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "entryId"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 100,
      -                    "type": "array"
      -                  },
      -                  "revision": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "strategicReserveLimit": {
      -                    "maximum": 5000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "enhancements": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "formationOptions": {
      -                          "items": {
      -                            "enum": [
      -                              "battlefield",
      -                              "strategic-reserves",
      -                              "deep-strike",
      -                              "embarked"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 4,
      -                          "type": "array"
      -                        },
      -                        "group": {
      -                          "enum": [
      -                            "epic-hero",
      -                            "character",
      -                            "battleline",
      -                            "infantry",
      -                            "swarm",
      -                            "mounted",
      -                            "beast",
      -                            "monster",
      -                            "vehicle",
      -                            "drone",
      -                            "transport",
      -                            "fortification",
      -                            "other"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "joined": {
      -                          "items": {
      -                            "properties": {
      -                              "label": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "label",
      -                              "name"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "nickname": {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        "note": {
      -                          "maxLength": 500,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "maximum": 10000,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "prebattleRules": {
      -                          "items": {
      -                            "enum": [
      -                              "infiltrators",
      -                              "scouts"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 2,
      -                          "type": "array"
      -                        },
      -                        "strategicReserveExempt": {
      -                          "type": "boolean"
      -                        },
      -                        "transport": {
      -                          "type": "boolean"
      -                        },
      -                        "transportRule": {
      -                          "maxLength": 4000,
      -                          "type": "string"
      -                        },
      -                        "upgrades": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "wargear": {
      -                          "items": {
      -                            "properties": {
      -                              "count": {
      -                                "maximum": 100,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "name",
      -                              "count"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 200,
      -                          "type": "array"
      -                        },
      -                        "warlord": {
      -                          "type": "boolean"
      -                        },
      -                        "warlordEligible": {
      -                          "type": "boolean"
      -                        },
      -                        "wounds": {
      -                          "maximum": 100,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "points",
      -                        "models"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 200,
      -                    "type": "array"
      -                  },
      -                  "waivedRules": {
      -                    "items": {
      -                      "enum": [
      -                        "points-limit",
      -                        "detachments",
      -                        "detachment-points",
      -                        "kotc-infantry",
      -                        "kotc-warlord",
      -                        "kotc-epic-heroes",
      -                        "kotc-toughness",
      -                        "kotc-datasheet-copies"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "maxItems": 8,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "catalogueId",
      -                  "revision",
      -                  "limit",
      -                  "detachment",
      -                  "disposition",
      -                  "units"
      -                ],
      -                "type": "object"
      -              },
      -              "id": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "type": "string"
      -              },
      -              "reminders": {
      -                "items": {
      -                  "properties": {
      -                    "ability": {
      -                      "maxLength": 80,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "description": {
      -                      "maxLength": 10000,
      -                      "type": "string"
      -                    },
      -                    "key": {
      -                      "maxLength": 240,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "timings": {
      -                      "items": {
      -                        "oneOf": [
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "phase-start",
      -                                  "phase-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "enum": [
      -                                  "command",
      -                                  "movement",
      -                                  "shooting",
      -                                  "charge",
      -                                  "fight",
      -                                  "any"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "turn-start",
      -                                  "turn-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "round-start",
      -                                  "round-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "const": "either",
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          }
      -                        ]
      -                      },
      -                      "maxItems": 10,
      -                      "minItems": 1,
      -                      "type": "array"
      -                    },
      -                    "unit": {
      -                      "properties": {
      -                        "index": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "index",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "whileDestroyed": {
      -                      "type": "boolean"
      -                    }
      -                  },
      -                  "required": [
      -                    "key",
      -                    "ability",
      -                    "description",
      -                    "timings"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 100,
      -                "type": "array"
      -              },
      -              "remindersEnabled": {
      -                "type": "boolean"
      -              },
      -              "text": {
      -                "maxLength": 20000,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "name",
      -              "text"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "roster"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "destroyed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "set-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "destroyed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-prep",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "primary": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "awards": {
      -                    "items": {
      -                      "properties": {
      -                        "criteria": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 2000,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "cumulative": {
      -                          "type": "boolean"
      -                        },
      -                        "group": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 100,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "max": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 100,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "mode": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 40,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "per": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 200,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "trigger": {
      -                          "properties": {
      -                            "phase": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "playerTurn": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMax": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMin": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "timing": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            }
      -                          },
      -                          "required": [
      -                            "timing",
      -                            "phase",
      -                            "playerTurn",
      -                            "roundMin",
      -                            "roundMax"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "vp": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "vp",
      -                        "per",
      -                        "mode",
      -                        "max",
      -                        "group",
      -                        "cumulative",
      -                        "criteria",
      -                        "trigger"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "key": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "name": {
      -                    "maxLength": 80,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "selection": {
      -                    "enum": [
      -                      "punishment",
      -                      "guards",
      -                      "tempting-target",
      -                      "beacon",
      -                      "locate-and-deny",
      -                      "sensor-sweep",
      -                      "consecrate"
      -                    ],
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "key",
      -                  "name"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon",
      -                    "locate-and-deny",
      -                    "sensor-sweep",
      -                    "consecrate"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 6,
      -            "type": "array"
      -          },
      -          "secondaryDeck": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon",
      -                    "locate-and-deny",
      -                    "sensor-sweep",
      -                    "consecrate"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 60,
      -            "type": "array"
      -          },
      -          "secondaryMode": {
      -            "enum": [
      -              "fixed",
      -              "tactical"
      -            ],
      -            "type": "string"
      -          },
      -          "stratagems": {
      -            "items": {
      -              "properties": {
      -                "cp": {
      -                  "maximum": 6,
      -                  "minimum": 0,
      -                  "type": "integer"
      -                },
      -                "detachment": {
      -                  "maxLength": 249,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "limit": {
      -                  "enum": [
      -                    "phase",
      -                    "turn",
      -                    "battle-round",
      -                    "battle",
      -                    "unlimited"
      -                  ],
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "phases": {
      -                  "items": {
      -                    "enum": [
      -                      "command",
      -                      "movement",
      -                      "shooting",
      -                      "charge",
      -                      "fight",
      -                      "end"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "maxItems": 6,
      -                  "type": "array"
      -                },
      -                "turn": {
      -                  "enum": [
      -                    "your-turn",
      -                    "opponent-turn",
      -                    "either"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name",
      -                "cp",
      -                "limit"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 48,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagems",
      -          "secondaries",
      -          "primary",
      -          "secondaryMode"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "deployed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "deploy-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "deployed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "formation": {
      -            "enum": [
      -              "battlefield",
      -              "strategic-reserves",
      -              "deep-strike",
      -              "embarked"
      -            ],
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-unit-formation",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "transportKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "formation"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-painted",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "painted"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "wound-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "damage-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-deployment",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-battlefield",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "terrainLayoutId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId",
      -          "terrainLayoutId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "use-stratagem",
      -            "type": "string"
      -          },
      -          "missed": {
      -            "properties": {
      -              "phase": {
      -                "enum": [
      -                  "command",
      -                  "movement",
      -                  "shooting",
      -                  "charge",
      -                  "fight",
      -                  "end"
      -                ],
      -                "type": "string"
      -              },
      -              "round": {
      -                "maximum": 5,
      -                "minimum": 1,
      -                "type": "integer"
      -              },
      -              "turn": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "round",
      -              "phase",
      -              "turn"
      -            ],
      -            "type": "object"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "use-new-orders",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon",
      -                  "locate-and-deny",
      -                  "sensor-sweep",
      -                  "consecrate"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          },
      -          "secondaryKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "stratagemKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagemKey",
      -          "secondaryKey",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "score-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "score-settlement",
      -            "type": "string"
      -          },
      -          "missed": {
      -            "properties": {
      -              "phase": {
      -                "enum": [
      -                  "command",
      -                  "movement",
      -                  "shooting",
      -                  "charge",
      -                  "fight",
      -                  "end"
      -                ],
      -                "type": "string"
      -              },
      -              "round": {
      -                "maximum": 5,
      -                "minimum": 1,
      -                "type": "integer"
      -              },
      -              "turn": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "round",
      -              "phase",
      -              "turn"
      -            ],
      -            "type": "object"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "round": {
      -            "maximum": 5,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "scores": {
      -            "items": {
      -              "oneOf": [
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "primary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "final": {
      -                      "properties": {
      -                        "claims": {
      -                          "items": {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "delta": {
      -                          "exclusiveMinimum": 0,
      -                          "maximum": 9007199254740991,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "claims",
      -                        "delta"
      -                      ],
      -                      "type": "object"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "secondary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "key": {
      -                      "maxLength": 64,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "status": {
      -                      "const": "achieved",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "key",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                }
      -              ]
      -            },
      -            "maxItems": 31,
      -            "minItems": 1,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "scores"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-secondary-status",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "status": {
      -            "enum": [
      -              "active",
      -              "achieved",
      -              "discarded",
      -              "returned"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "status"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon",
      -                  "locate-and-deny",
      -                  "sensor-sweep",
      -                  "consecrate"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondaries",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon",
      -                    "locate-and-deny",
      -                    "sensor-sweep",
      -                    "consecrate"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 2,
      -            "minItems": 1,
      -            "type": "array"
      -          },
      -          "selected": {
      -            "const": true,
      -            "type": "boolean"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondaries"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-draw",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-scoring",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "select-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon",
      -                  "locate-and-deny",
      -                  "sensor-sweep",
      -                  "consecrate"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reveal-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "begin-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "adjust-cp",
      -            "type": "string"
      -          },
      -          "missed": {
      -            "properties": {
      -              "phase": {
      -                "enum": [
      -                  "command",
      -                  "movement",
      -                  "shooting",
      -                  "charge",
      -                  "fight",
      -                  "end"
      -                ],
      -                "type": "string"
      -              },
      -              "round": {
      -                "maximum": 5,
      -                "minimum": 1,
      -                "type": "integer"
      -              },
      -              "turn": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "round",
      -              "phase",
      -              "turn"
      -            ],
      -            "type": "object"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "gainCp": {
      -            "type": "boolean"
      -          },
      -          "keys": {
      -            "items": {
      -              "maxLength": 64,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "kind": {
      -            "const": "resolve-tactical-hand",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "category": {
      -            "enum": [
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          },
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "score",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "category",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "correct-player",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "resource": {
      -            "enum": [
      -              "cp",
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "playerId",
      -          "resource",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "settle-opponent-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "request-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "cancel-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "pause-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "resume-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "concededBy": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "end-battle",
      -            "type": "string"
      -          },
      -          "reason": {
      -            "enum": [
      -              "completed",
      -              "finished-early",
      -              "conceded"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reopen-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "undo",
      -            "type": "string"
      -          },
      -          "target": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "target"
      -        ],
      -        "type": "object"
      -      }
      -    ]
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "attach-saved-roster",
      -        "type": "string"
      -      },
      -      "playerId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "rosterId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "rosterId"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "oneOf": [
      +      {
      +        "properties": {
      +          "cardKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "select-mission",
      +            "type": "string"
      +          },
      +          "occurrence": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "selection": {
      +            "oneOf": [
      +              {
      +                "properties": {
      +                  "fallback": {
      +                    "type": "boolean"
      +                  },
      +                  "kind": {
      +                    "const": "punishment",
      +                    "type": "string"
      +                  },
      +                  "qualified": {
      +                    "type": "boolean"
      +                  },
      +                  "unavailable": {
      +                    "const": true,
      +                    "type": "boolean"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "playerId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "rosterSeq": {
      +                          "exclusiveMinimum": 0,
      +                          "maximum": 9007199254740991,
      +                          "type": "integer"
      +                        },
      +                        "unitKey": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "playerId",
      +                        "unitKey",
      +                        "rosterSeq"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "units",
      +                  "fallback",
      +                  "qualified"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "guards": {
      +                    "items": {
      +                      "properties": {
      +                        "objective": {
      +                          "properties": {
      +                            "key": {
      +                              "maxLength": 128,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "name": {
      +                              "maxLength": 80,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "key",
      +                            "name"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "unit": {
      +                          "properties": {
      +                            "playerId": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "rosterSeq": {
      +                              "exclusiveMinimum": 0,
      +                              "maximum": 9007199254740991,
      +                              "type": "integer"
      +                            },
      +                            "unitKey": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "playerId",
      +                            "unitKey",
      +                            "rosterSeq"
      +                          ],
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "objective",
      +                        "unit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "guards",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "guards"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "kind": {
      +                    "const": "tempting-target",
      +                    "type": "string"
      +                  },
      +                  "noMansLand": {
      +                    "type": "boolean"
      +                  },
      +                  "notHome": {
      +                    "type": "boolean"
      +                  },
      +                  "objective": {
      +                    "properties": {
      +                      "key": {
      +                        "maxLength": 128,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "key",
      +                      "name"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "objective",
      +                  "notHome",
      +                  "noMansLand"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "kind": {
      +                    "const": "beacon",
      +                    "type": "string"
      +                  },
      +                  "note": {
      +                    "maxLength": 200,
      +                    "type": "string"
      +                  },
      +                  "unit": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "playerId": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "rosterSeq": {
      +                            "exclusiveMinimum": 0,
      +                            "maximum": 9007199254740991,
      +                            "type": "integer"
      +                          },
      +                          "unitKey": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "playerId",
      +                          "unitKey",
      +                          "rosterSeq"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "unit",
      +                  "note"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "allEligible": {
      +                    "type": "boolean"
      +                  },
      +                  "areas": {
      +                    "items": {
      +                      "properties": {
      +                        "key": {
      +                          "maxLength": 128,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 5,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "locate-and-deny",
      +                    "type": "string"
      +                  },
      +                  "outsideZone": {
      +                    "type": "boolean"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "areas",
      +                  "outsideZone",
      +                  "allEligible"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "controlled": {
      +                    "type": "boolean"
      +                  },
      +                  "kind": {
      +                    "const": "sensor-sweep",
      +                    "type": "string"
      +                  },
      +                  "marker": {
      +                    "properties": {
      +                      "key": {
      +                        "maxLength": 128,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "playerId": {
      +                        "maxLength": 64,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "key",
      +                      "name",
      +                      "playerId"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "marker",
      +                  "controlled"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "consecrations": {
      +                    "items": {
      +                      "properties": {
      +                        "objective": {
      +                          "properties": {
      +                            "key": {
      +                              "maxLength": 128,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "name": {
      +                              "maxLength": 80,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "key",
      +                            "name"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "unit": {
      +                          "properties": {
      +                            "playerId": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "rosterSeq": {
      +                              "exclusiveMinimum": 0,
      +                              "maximum": 9007199254740991,
      +                              "type": "integer"
      +                            },
      +                            "unitKey": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "playerId",
      +                            "unitKey",
      +                            "rosterSeq"
      +                          ],
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "objective",
      +                        "unit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "consecrate",
      +                    "type": "string"
      +                  },
      +                  "notHome": {
      +                    "type": "boolean"
      +                  },
      +                  "qualified": {
      +                    "type": "boolean"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "consecrations",
      +                  "qualified",
      +                  "notHome"
      +                ],
      +                "type": "object"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "cardKey",
      +          "occurrence",
      +          "selection"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "clockLimitMinutes": {
      +            "anyOf": [
      +              {
      +                "maximum": 300,
      +                "minimum": 5,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "kind": {
      +            "const": "configure-battle",
      +            "type": "string"
      +          },
      +          "limit": {
      +            "anyOf": [
      +              {
      +                "maximum": 10000,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "manual": {
      +            "type": "boolean"
      +          },
      +          "missionPackId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "playerCount": {
      +            "anyOf": [
      +              {
      +                "const": 2,
      +                "type": "number"
      +              },
      +              {
      +                "const": 3,
      +                "type": "number"
      +              },
      +              {
      +                "const": 4,
      +                "type": "number"
      +              }
      +            ]
      +          },
      +          "teamBattle": {
      +            "type": "boolean"
      +          },
      +          "terrainLayoutId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "twistId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "limit",
      +          "missionPackId",
      +          "terrainLayoutId",
      +          "twistId",
      +          "clockLimitMinutes"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reset-setup",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "detach-roster",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "eventToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "lock-league-rosters",
      +            "type": "string"
      +          },
      +          "leagueToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "leagueToken"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-setup-step",
      +            "type": "string"
      +          },
      +          "step": {
      +            "maximum": 9,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "step"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-attacker",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "attackerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-first-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "disposition": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-side-disposition",
      +            "type": "string"
      +          },
      +          "side": {
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "side",
      +          "disposition"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "attach-roster",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "prep": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "primary": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "awards": {
      +                            "items": {
      +                              "properties": {
      +                                "criteria": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 2000,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "cumulative": {
      +                                  "type": "boolean"
      +                                },
      +                                "group": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 100,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "max": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maximum": 100,
      +                                      "minimum": 0,
      +                                      "type": "integer"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "mode": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 40,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "per": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 200,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "trigger": {
      +                                  "properties": {
      +                                    "phase": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "playerTurn": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMax": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMin": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "timing": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    }
      +                                  },
      +                                  "required": [
      +                                    "timing",
      +                                    "phase",
      +                                    "playerTurn",
      +                                    "roundMin",
      +                                    "roundMax"
      +                                  ],
      +                                  "type": "object"
      +                                },
      +                                "vp": {
      +                                  "maximum": 100,
      +                                  "minimum": 0,
      +                                  "type": "integer"
      +                                }
      +                              },
      +                              "required": [
      +                                "vp",
      +                                "per",
      +                                "mode",
      +                                "max",
      +                                "group",
      +                                "cumulative",
      +                                "criteria",
      +                                "trigger"
      +                              ],
      +                              "type": "object"
      +                            },
      +                            "maxItems": 20,
      +                            "type": "array"
      +                          },
      +                          "key": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "name": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "selection": {
      +                            "enum": [
      +                              "punishment",
      +                              "guards",
      +                              "tempting-target",
      +                              "beacon",
      +                              "locate-and-deny",
      +                              "sensor-sweep",
      +                              "consecrate"
      +                            ],
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "key",
      +                          "name"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "secondaries": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "selection": {
      +                          "enum": [
      +                            "punishment",
      +                            "guards",
      +                            "tempting-target",
      +                            "beacon",
      +                            "locate-and-deny",
      +                            "sensor-sweep",
      +                            "consecrate"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 6,
      +                    "type": "array"
      +                  },
      +                  "secondaryDeck": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "selection": {
      +                          "enum": [
      +                            "punishment",
      +                            "guards",
      +                            "tempting-target",
      +                            "beacon",
      +                            "locate-and-deny",
      +                            "sensor-sweep",
      +                            "consecrate"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 60,
      +                    "type": "array"
      +                  },
      +                  "secondaryMode": {
      +                    "enum": [
      +                      "fixed",
      +                      "tactical"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "stratagems": {
      +                    "items": {
      +                      "properties": {
      +                        "cp": {
      +                          "maximum": 6,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "detachment": {
      +                          "maxLength": 249,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "limit": {
      +                          "enum": [
      +                            "phase",
      +                            "turn",
      +                            "battle-round",
      +                            "battle",
      +                            "unlimited"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "phases": {
      +                          "items": {
      +                            "enum": [
      +                              "command",
      +                              "movement",
      +                              "shooting",
      +                              "charge",
      +                              "fight",
      +                              "end"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 6,
      +                          "type": "array"
      +                        },
      +                        "turn": {
      +                          "enum": [
      +                            "your-turn",
      +                            "opponent-turn",
      +                            "either"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "cp",
      +                        "limit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 48,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "stratagems",
      +                  "secondaries",
      +                  "primary",
      +                  "secondaryMode"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "roster": {
      +            "properties": {
      +              "built": {
      +                "properties": {
      +                  "catalogueId": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "detachment": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 80,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachmentIds": {
      +                    "items": {
      +                      "maxLength": 128,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "detachmentPointBudget": {
      +                    "anyOf": [
      +                      {
      +                        "maximum": 3,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachments": {
      +                    "items": {
      +                      "properties": {
      +                        "name": {
      +                          "maxLength": 80,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 3,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "name",
      +                        "points"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "disposition": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 64,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "edition": {
      +                    "properties": {
      +                      "description": {
      +                        "maxLength": 240,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "id": {
      +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "slug": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      +                        "type": "string"
      +                      },
      +                      "status": {
      +                        "enum": [
      +                          "preview",
      +                          "released",
      +                          "retired"
      +                        ],
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "id",
      +                      "name",
      +                      "status"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "limit": {
      +                    "maximum": 10000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "picks": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "catalogueId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "choices": {
      +                          "additionalProperties": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 60,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        },
      +                        "note": {
      +                          "maxLength": 500,
      +                          "type": "string"
      +                        },
      +                        "spreads": {
      +                          "additionalProperties": {
      +                            "additionalProperties": {
      +                              "maximum": 60,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            "propertyNames": {
      +                              "maxLength": 64,
      +                              "type": "string"
      +                            },
      +                            "type": "object"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "toggles": {
      +                          "additionalProperties": {
      +                            "maximum": 1,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "entryId"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 100,
      +                    "type": "array"
      +                  },
      +                  "pointsBudget": {
      +                    "maximum": 10000,
      +                    "minimum": 500,
      +                    "type": "integer"
      +                  },
      +                  "revision": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "strategicReserveLimit": {
      +                    "maximum": 5000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "enhancements": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "formationOptions": {
      +                          "items": {
      +                            "enum": [
      +                              "battlefield",
      +                              "strategic-reserves",
      +                              "deep-strike",
      +                              "embarked"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 4,
      +                          "type": "array"
      +                        },
      +                        "group": {
      +                          "enum": [
      +                            "epic-hero",
      +                            "character",
      +                            "battleline",
      +                            "infantry",
      +                            "swarm",
      +                            "mounted",
      +                            "beast",
      +                            "monster",
      +                            "vehicle",
      +                            "drone",
      +                            "transport",
      +                            "fortification",
      +                            "other"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "joined": {
      +                          "items": {
      +                            "properties": {
      +                              "label": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "label",
      +                              "name"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "note": {
      +                          "maxLength": 500,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "maximum": 10000,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "prebattleRules": {
      +                          "items": {
      +                            "enum": [
      +                              "infiltrators",
      +                              "scouts"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 2,
      +                          "type": "array"
      +                        },
      +                        "strategicReserveExempt": {
      +                          "type": "boolean"
      +                        },
      +                        "transport": {
      +                          "type": "boolean"
      +                        },
      +                        "transportRule": {
      +                          "maxLength": 4000,
      +                          "type": "string"
      +                        },
      +                        "upgrades": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "wargear": {
      +                          "items": {
      +                            "properties": {
      +                              "count": {
      +                                "maximum": 100,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "name",
      +                              "count"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 200,
      +                          "type": "array"
      +                        },
      +                        "warlord": {
      +                          "type": "boolean"
      +                        },
      +                        "warlordEligible": {
      +                          "type": "boolean"
      +                        },
      +                        "wounds": {
      +                          "maximum": 100,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "points",
      +                        "models"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 200,
      +                    "type": "array"
      +                  },
      +                  "waivedRules": {
      +                    "items": {
      +                      "enum": [
      +                        "points-limit",
      +                        "detachments",
      +                        "detachment-points",
      +                        "kotc-infantry",
      +                        "kotc-warlord",
      +                        "kotc-epic-heroes",
      +                        "kotc-toughness",
      +                        "kotc-datasheet-copies"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "maxItems": 8,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "catalogueId",
      +                  "revision",
      +                  "limit",
      +                  "detachment",
      +                  "disposition",
      +                  "units"
      +                ],
      +                "type": "object"
      +              },
      +              "id": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "type": "string"
      +              },
      +              "reminders": {
      +                "items": {
      +                  "properties": {
      +                    "ability": {
      +                      "maxLength": 80,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "description": {
      +                      "maxLength": 10000,
      +                      "type": "string"
      +                    },
      +                    "key": {
      +                      "maxLength": 240,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "timings": {
      +                      "items": {
      +                        "oneOf": [
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "phase-start",
      +                                  "phase-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "enum": [
      +                                  "command",
      +                                  "movement",
      +                                  "shooting",
      +                                  "charge",
      +                                  "fight",
      +                                  "any"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "turn-start",
      +                                  "turn-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "round-start",
      +                                  "round-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "const": "either",
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          }
      +                        ]
      +                      },
      +                      "maxItems": 10,
      +                      "minItems": 1,
      +                      "type": "array"
      +                    },
      +                    "unit": {
      +                      "properties": {
      +                        "index": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "index",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "whileDestroyed": {
      +                      "type": "boolean"
      +                    }
      +                  },
      +                  "required": [
      +                    "key",
      +                    "ability",
      +                    "description",
      +                    "timings"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 100,
      +                "type": "array"
      +              },
      +              "remindersEnabled": {
      +                "type": "boolean"
      +              },
      +              "text": {
      +                "maxLength": 20000,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "text"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "roster"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "destroyed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "set-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "destroyed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-prep",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "primary": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "awards": {
      +                    "items": {
      +                      "properties": {
      +                        "criteria": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 2000,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "cumulative": {
      +                          "type": "boolean"
      +                        },
      +                        "group": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 100,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "max": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 100,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "mode": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 40,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "per": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 200,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "trigger": {
      +                          "properties": {
      +                            "phase": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "playerTurn": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMax": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMin": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "timing": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            }
      +                          },
      +                          "required": [
      +                            "timing",
      +                            "phase",
      +                            "playerTurn",
      +                            "roundMin",
      +                            "roundMax"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "vp": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "vp",
      +                        "per",
      +                        "mode",
      +                        "max",
      +                        "group",
      +                        "cumulative",
      +                        "criteria",
      +                        "trigger"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "key": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "maxLength": 80,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "selection": {
      +                    "enum": [
      +                      "punishment",
      +                      "guards",
      +                      "tempting-target",
      +                      "beacon",
      +                      "locate-and-deny",
      +                      "sensor-sweep",
      +                      "consecrate"
      +                    ],
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "key",
      +                  "name"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 6,
      +            "type": "array"
      +          },
      +          "secondaryDeck": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 60,
      +            "type": "array"
      +          },
      +          "secondaryMode": {
      +            "enum": [
      +              "fixed",
      +              "tactical"
      +            ],
      +            "type": "string"
      +          },
      +          "stratagems": {
      +            "items": {
      +              "properties": {
      +                "cp": {
      +                  "maximum": 6,
      +                  "minimum": 0,
      +                  "type": "integer"
      +                },
      +                "detachment": {
      +                  "maxLength": 249,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "limit": {
      +                  "enum": [
      +                    "phase",
      +                    "turn",
      +                    "battle-round",
      +                    "battle",
      +                    "unlimited"
      +                  ],
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "phases": {
      +                  "items": {
      +                    "enum": [
      +                      "command",
      +                      "movement",
      +                      "shooting",
      +                      "charge",
      +                      "fight",
      +                      "end"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "maxItems": 6,
      +                  "type": "array"
      +                },
      +                "turn": {
      +                  "enum": [
      +                    "your-turn",
      +                    "opponent-turn",
      +                    "either"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name",
      +                "cp",
      +                "limit"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 48,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagems",
      +          "secondaries",
      +          "primary",
      +          "secondaryMode"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "deployed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "deploy-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "deployed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "formation": {
      +            "enum": [
      +              "battlefield",
      +              "strategic-reserves",
      +              "deep-strike",
      +              "embarked"
      +            ],
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-unit-formation",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "transportKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "formation"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-painted",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "painted"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "wound-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "damage-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-deployment",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-battlefield",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "terrainLayoutId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId",
      +          "terrainLayoutId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "use-stratagem",
      +            "type": "string"
      +          },
      +          "missed": {
      +            "properties": {
      +              "phase": {
      +                "enum": [
      +                  "command",
      +                  "movement",
      +                  "shooting",
      +                  "charge",
      +                  "fight",
      +                  "end"
      +                ],
      +                "type": "string"
      +              },
      +              "round": {
      +                "maximum": 5,
      +                "minimum": 1,
      +                "type": "integer"
      +              },
      +              "turn": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "round",
      +              "phase",
      +              "turn"
      +            ],
      +            "type": "object"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "use-new-orders",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          },
      +          "secondaryKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "stratagemKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagemKey",
      +          "secondaryKey",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "score-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "score-settlement",
      +            "type": "string"
      +          },
      +          "missed": {
      +            "properties": {
      +              "phase": {
      +                "enum": [
      +                  "command",
      +                  "movement",
      +                  "shooting",
      +                  "charge",
      +                  "fight",
      +                  "end"
      +                ],
      +                "type": "string"
      +              },
      +              "round": {
      +                "maximum": 5,
      +                "minimum": 1,
      +                "type": "integer"
      +              },
      +              "turn": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "round",
      +              "phase",
      +              "turn"
      +            ],
      +            "type": "object"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "round": {
      +            "maximum": 5,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "scores": {
      +            "items": {
      +              "oneOf": [
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "primary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "final": {
      +                      "properties": {
      +                        "claims": {
      +                          "items": {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "delta": {
      +                          "exclusiveMinimum": 0,
      +                          "maximum": 9007199254740991,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "claims",
      +                        "delta"
      +                      ],
      +                      "type": "object"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "secondary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "key": {
      +                      "maxLength": 64,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "status": {
      +                      "const": "achieved",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "key",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                }
      +              ]
      +            },
      +            "maxItems": 31,
      +            "minItems": 1,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "scores"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-secondary-status",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "status": {
      +            "enum": [
      +              "active",
      +              "achieved",
      +              "discarded",
      +              "returned"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondaries",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 2,
      +            "minItems": 1,
      +            "type": "array"
      +          },
      +          "selected": {
      +            "const": true,
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondaries"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-draw",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-scoring",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "select-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reveal-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "begin-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "adjust-cp",
      +            "type": "string"
      +          },
      +          "missed": {
      +            "properties": {
      +              "phase": {
      +                "enum": [
      +                  "command",
      +                  "movement",
      +                  "shooting",
      +                  "charge",
      +                  "fight",
      +                  "end"
      +                ],
      +                "type": "string"
      +              },
      +              "round": {
      +                "maximum": 5,
      +                "minimum": 1,
      +                "type": "integer"
      +              },
      +              "turn": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "round",
      +              "phase",
      +              "turn"
      +            ],
      +            "type": "object"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "gainCp": {
      +            "type": "boolean"
      +          },
      +          "keys": {
      +            "items": {
      +              "maxLength": 64,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "kind": {
      +            "const": "resolve-tactical-hand",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "category": {
      +            "enum": [
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          },
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "score",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "category",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "correct-player",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "resource": {
      +            "enum": [
      +              "cp",
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "playerId",
      +          "resource",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "settle-opponent-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "request-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "cancel-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "pause-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "resume-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "concededBy": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "end-battle",
      +            "type": "string"
      +          },
      +          "reason": {
      +            "enum": [
      +              "completed",
      +              "finished-early",
      +              "conceded"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reopen-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "add-note",
      +            "type": "string"
      +          },
      +          "text": {
      +            "maxLength": 500,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "text"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "undo",
      +            "type": "string"
      +          },
      +          "target": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "target"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "attach-saved-roster",
      +        "type": "string"
      +      },
      +      "playerId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "rosterId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "rosterId"
      +    ],
      +    "type": "object"
      +  }
      +]
  8. Changed1 schema field changed
    • changedInput schema / properties / command / anyOf
      Previous value: -[
      -  {
      -    "oneOf": [
      -      {
      -        "properties": {
      -          "cardKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "select-mission",
      -            "type": "string"
      -          },
      -          "occurrence": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "selection": {
      -            "oneOf": [
      -              {
      -                "properties": {
      -                  "fallback": {
      -                    "type": "boolean"
      -                  },
      -                  "kind": {
      -                    "const": "punishment",
      -                    "type": "string"
      -                  },
      -                  "qualified": {
      -                    "type": "boolean"
      -                  },
      -                  "unavailable": {
      -                    "const": true,
      -                    "type": "boolean"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "playerId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "rosterSeq": {
      -                          "exclusiveMinimum": 0,
      -                          "maximum": 9007199254740991,
      -                          "type": "integer"
      -                        },
      -                        "unitKey": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "playerId",
      -                        "unitKey",
      -                        "rosterSeq"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "units",
      -                  "fallback",
      -                  "qualified"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "guards": {
      -                    "items": {
      -                      "properties": {
      -                        "objective": {
      -                          "properties": {
      -                            "key": {
      -                              "maxLength": 128,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "name": {
      -                              "maxLength": 80,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "key",
      -                            "name"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "unit": {
      -                          "properties": {
      -                            "playerId": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "rosterSeq": {
      -                              "exclusiveMinimum": 0,
      -                              "maximum": 9007199254740991,
      -                              "type": "integer"
      -                            },
      -                            "unitKey": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "playerId",
      -                            "unitKey",
      -                            "rosterSeq"
      -                          ],
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "objective",
      -                        "unit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "guards",
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "guards"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "kind": {
      -                    "const": "tempting-target",
      -                    "type": "string"
      -                  },
      -                  "noMansLand": {
      -                    "type": "boolean"
      -                  },
      -                  "notHome": {
      -                    "type": "boolean"
      -                  },
      -                  "objective": {
      -                    "properties": {
      -                      "key": {
      -                        "maxLength": 128,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "key",
      -                      "name"
      -                    ],
      -                    "type": "object"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "objective",
      -                  "notHome",
      -                  "noMansLand"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "kind": {
      -                    "const": "beacon",
      -                    "type": "string"
      -                  },
      -                  "note": {
      -                    "maxLength": 200,
      -                    "type": "string"
      -                  },
      -                  "unit": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "playerId": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "rosterSeq": {
      -                            "exclusiveMinimum": 0,
      -                            "maximum": 9007199254740991,
      -                            "type": "integer"
      -                          },
      -                          "unitKey": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "playerId",
      -                          "unitKey",
      -                          "rosterSeq"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "unit",
      -                  "note"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "allEligible": {
      -                    "type": "boolean"
      -                  },
      -                  "areas": {
      -                    "items": {
      -                      "properties": {
      -                        "key": {
      -                          "maxLength": 128,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 5,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "locate-and-deny",
      -                    "type": "string"
      -                  },
      -                  "outsideZone": {
      -                    "type": "boolean"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "areas",
      -                  "outsideZone",
      -                  "allEligible"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "controlled": {
      -                    "type": "boolean"
      -                  },
      -                  "kind": {
      -                    "const": "sensor-sweep",
      -                    "type": "string"
      -                  },
      -                  "marker": {
      -                    "properties": {
      -                      "key": {
      -                        "maxLength": 128,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "playerId": {
      -                        "maxLength": 64,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "key",
      -                      "name",
      -                      "playerId"
      -                    ],
      -                    "type": "object"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "marker",
      -                  "controlled"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "consecrations": {
      -                    "items": {
      -                      "properties": {
      -                        "objective": {
      -                          "properties": {
      -                            "key": {
      -                              "maxLength": 128,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "name": {
      -                              "maxLength": 80,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "key",
      -                            "name"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "unit": {
      -                          "properties": {
      -                            "playerId": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "rosterSeq": {
      -                              "exclusiveMinimum": 0,
      -                              "maximum": 9007199254740991,
      -                              "type": "integer"
      -                            },
      -                            "unitKey": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "playerId",
      -                            "unitKey",
      -                            "rosterSeq"
      -                          ],
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "objective",
      -                        "unit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "consecrate",
      -                    "type": "string"
      -                  },
      -                  "notHome": {
      -                    "type": "boolean"
      -                  },
      -                  "qualified": {
      -                    "type": "boolean"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "consecrations",
      -                  "qualified",
      -                  "notHome"
      -                ],
      -                "type": "object"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "cardKey",
      -          "occurrence",
      -          "selection"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "clockLimitMinutes": {
      -            "anyOf": [
      -              {
      -                "maximum": 300,
      -                "minimum": 5,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "kind": {
      -            "const": "configure-battle",
      -            "type": "string"
      -          },
      -          "limit": {
      -            "anyOf": [
      -              {
      -                "maximum": 10000,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "missionPackId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "playerCount": {
      -            "anyOf": [
      -              {
      -                "const": 2,
      -                "type": "number"
      -              },
      -              {
      -                "const": 3,
      -                "type": "number"
      -              },
      -              {
      -                "const": 4,
      -                "type": "number"
      -              }
      -            ]
      -          },
      -          "teamBattle": {
      -            "type": "boolean"
      -          },
      -          "terrainLayoutId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "twistId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "limit",
      -          "missionPackId",
      -          "terrainLayoutId",
      -          "twistId",
      -          "clockLimitMinutes"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reset-setup",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "detach-roster",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "eventToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "lock-league-rosters",
      -            "type": "string"
      -          },
      -          "leagueToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "leagueToken"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-setup-step",
      -            "type": "string"
      -          },
      -          "step": {
      -            "maximum": 9,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "step"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-attacker",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "attackerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-first-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "disposition": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-side-disposition",
      -            "type": "string"
      -          },
      -          "side": {
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "side",
      -          "disposition"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "attach-roster",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "prep": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "primary": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "awards": {
      -                            "items": {
      -                              "properties": {
      -                                "criteria": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 2000,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "cumulative": {
      -                                  "type": "boolean"
      -                                },
      -                                "group": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 100,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "max": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maximum": 100,
      -                                      "minimum": 0,
      -                                      "type": "integer"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "mode": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 40,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "per": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 200,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "trigger": {
      -                                  "properties": {
      -                                    "phase": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "playerTurn": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMax": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMin": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "timing": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    }
      -                                  },
      -                                  "required": [
      -                                    "timing",
      -                                    "phase",
      -                                    "playerTurn",
      -                                    "roundMin",
      -                                    "roundMax"
      -                                  ],
      -                                  "type": "object"
      -                                },
      -                                "vp": {
      -                                  "maximum": 100,
      -                                  "minimum": 0,
      -                                  "type": "integer"
      -                                }
      -                              },
      -                              "required": [
      -                                "vp",
      -                                "per",
      -                                "mode",
      -                                "max",
      -                                "group",
      -                                "cumulative",
      -                                "criteria",
      -                                "trigger"
      -                              ],
      -                              "type": "object"
      -                            },
      -                            "maxItems": 20,
      -                            "type": "array"
      -                          },
      -                          "key": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "name": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "selection": {
      -                            "enum": [
      -                              "punishment",
      -                              "guards",
      -                              "tempting-target",
      -                              "beacon",
      -                              "locate-and-deny",
      -                              "sensor-sweep",
      -                              "consecrate"
      -                            ],
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "key",
      -                          "name"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "secondaries": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "selection": {
      -                          "enum": [
      -                            "punishment",
      -                            "guards",
      -                            "tempting-target",
      -                            "beacon",
      -                            "locate-and-deny",
      -                            "sensor-sweep",
      -                            "consecrate"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 6,
      -                    "type": "array"
      -                  },
      -                  "secondaryDeck": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "selection": {
      -                          "enum": [
      -                            "punishment",
      -                            "guards",
      -                            "tempting-target",
      -                            "beacon",
      -                            "locate-and-deny",
      -                            "sensor-sweep",
      -                            "consecrate"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 60,
      -                    "type": "array"
      -                  },
      -                  "secondaryMode": {
      -                    "enum": [
      -                      "fixed",
      -                      "tactical"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "stratagems": {
      -                    "items": {
      -                      "properties": {
      -                        "cp": {
      -                          "maximum": 6,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "detachment": {
      -                          "maxLength": 249,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "limit": {
      -                          "enum": [
      -                            "phase",
      -                            "turn",
      -                            "battle-round",
      -                            "battle",
      -                            "unlimited"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "phases": {
      -                          "items": {
      -                            "enum": [
      -                              "command",
      -                              "movement",
      -                              "shooting",
      -                              "charge",
      -                              "fight",
      -                              "end"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 6,
      -                          "type": "array"
      -                        },
      -                        "turn": {
      -                          "enum": [
      -                            "your-turn",
      -                            "opponent-turn",
      -                            "either"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "cp",
      -                        "limit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 48,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "stratagems",
      -                  "secondaries",
      -                  "primary",
      -                  "secondaryMode"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "roster": {
      -            "properties": {
      -              "built": {
      -                "properties": {
      -                  "catalogueId": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "detachment": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 80,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachmentIds": {
      -                    "items": {
      -                      "maxLength": 128,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "detachmentPointBudget": {
      -                    "anyOf": [
      -                      {
      -                        "maximum": 3,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachments": {
      -                    "items": {
      -                      "properties": {
      -                        "name": {
      -                          "maxLength": 80,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 3,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "name",
      -                        "points"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "disposition": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 64,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "edition": {
      -                    "properties": {
      -                      "description": {
      -                        "maxLength": 240,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "id": {
      -                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "slug": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      -                        "type": "string"
      -                      },
      -                      "status": {
      -                        "enum": [
      -                          "preview",
      -                          "released",
      -                          "retired"
      -                        ],
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "id",
      -                      "name",
      -                      "status"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "limit": {
      -                    "maximum": 10000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "picks": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "catalogueId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "choices": {
      -                          "additionalProperties": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 60,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        },
      -                        "nickname": {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        "note": {
      -                          "maxLength": 500,
      -                          "type": "string"
      -                        },
      -                        "spreads": {
      -                          "additionalProperties": {
      -                            "additionalProperties": {
      -                              "maximum": 60,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            "propertyNames": {
      -                              "maxLength": 64,
      -                              "type": "string"
      -                            },
      -                            "type": "object"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "toggles": {
      -                          "additionalProperties": {
      -                            "maximum": 1,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "entryId"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 100,
      -                    "type": "array"
      -                  },
      -                  "revision": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "strategicReserveLimit": {
      -                    "maximum": 5000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "enhancements": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "formationOptions": {
      -                          "items": {
      -                            "enum": [
      -                              "battlefield",
      -                              "strategic-reserves",
      -                              "deep-strike",
      -                              "embarked"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 4,
      -                          "type": "array"
      -                        },
      -                        "group": {
      -                          "enum": [
      -                            "epic-hero",
      -                            "character",
      -                            "battleline",
      -                            "infantry",
      -                            "swarm",
      -                            "mounted",
      -                            "beast",
      -                            "monster",
      -                            "vehicle",
      -                            "drone",
      -                            "transport",
      -                            "fortification",
      -                            "other"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "joined": {
      -                          "items": {
      -                            "properties": {
      -                              "label": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "label",
      -                              "name"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "nickname": {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        "note": {
      -                          "maxLength": 500,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "maximum": 10000,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "prebattleRules": {
      -                          "items": {
      -                            "enum": [
      -                              "infiltrators",
      -                              "scouts"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 2,
      -                          "type": "array"
      -                        },
      -                        "strategicReserveExempt": {
      -                          "type": "boolean"
      -                        },
      -                        "transport": {
      -                          "type": "boolean"
      -                        },
      -                        "transportRule": {
      -                          "maxLength": 4000,
      -                          "type": "string"
      -                        },
      -                        "upgrades": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "wargear": {
      -                          "items": {
      -                            "properties": {
      -                              "count": {
      -                                "maximum": 100,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "name",
      -                              "count"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 200,
      -                          "type": "array"
      -                        },
      -                        "warlord": {
      -                          "type": "boolean"
      -                        },
      -                        "warlordEligible": {
      -                          "type": "boolean"
      -                        },
      -                        "wounds": {
      -                          "maximum": 100,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "points",
      -                        "models"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 200,
      -                    "type": "array"
      -                  },
      -                  "waivedRules": {
      -                    "items": {
      -                      "enum": [
      -                        "points-limit",
      -                        "detachments",
      -                        "detachment-points",
      -                        "kotc-infantry",
      -                        "kotc-warlord",
      -                        "kotc-epic-heroes",
      -                        "kotc-toughness",
      -                        "kotc-datasheet-copies"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "maxItems": 8,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "catalogueId",
      -                  "revision",
      -                  "limit",
      -                  "detachment",
      -                  "disposition",
      -                  "units"
      -                ],
      -                "type": "object"
      -              },
      -              "id": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "type": "string"
      -              },
      -              "reminders": {
      -                "items": {
      -                  "properties": {
      -                    "ability": {
      -                      "maxLength": 80,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "description": {
      -                      "maxLength": 10000,
      -                      "type": "string"
      -                    },
      -                    "key": {
      -                      "maxLength": 240,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "timings": {
      -                      "items": {
      -                        "oneOf": [
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "phase-start",
      -                                  "phase-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "enum": [
      -                                  "command",
      -                                  "movement",
      -                                  "shooting",
      -                                  "charge",
      -                                  "fight",
      -                                  "any"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "turn-start",
      -                                  "turn-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "round-start",
      -                                  "round-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "const": "either",
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          }
      -                        ]
      -                      },
      -                      "maxItems": 10,
      -                      "minItems": 1,
      -                      "type": "array"
      -                    },
      -                    "unit": {
      -                      "properties": {
      -                        "index": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "index",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "whileDestroyed": {
      -                      "type": "boolean"
      -                    }
      -                  },
      -                  "required": [
      -                    "key",
      -                    "ability",
      -                    "description",
      -                    "timings"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 100,
      -                "type": "array"
      -              },
      -              "remindersEnabled": {
      -                "type": "boolean"
      -              },
      -              "text": {
      -                "maxLength": 20000,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "name",
      -              "text"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "roster"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "destroyed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "set-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "destroyed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-prep",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "primary": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "awards": {
      -                    "items": {
      -                      "properties": {
      -                        "criteria": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 2000,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "cumulative": {
      -                          "type": "boolean"
      -                        },
      -                        "group": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 100,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "max": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 100,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "mode": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 40,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "per": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 200,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "trigger": {
      -                          "properties": {
      -                            "phase": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "playerTurn": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMax": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMin": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "timing": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            }
      -                          },
      -                          "required": [
      -                            "timing",
      -                            "phase",
      -                            "playerTurn",
      -                            "roundMin",
      -                            "roundMax"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "vp": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "vp",
      -                        "per",
      -                        "mode",
      -                        "max",
      -                        "group",
      -                        "cumulative",
      -                        "criteria",
      -                        "trigger"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "key": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "name": {
      -                    "maxLength": 80,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "selection": {
      -                    "enum": [
      -                      "punishment",
      -                      "guards",
      -                      "tempting-target",
      -                      "beacon",
      -                      "locate-and-deny",
      -                      "sensor-sweep",
      -                      "consecrate"
      -                    ],
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "key",
      -                  "name"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon",
      -                    "locate-and-deny",
      -                    "sensor-sweep",
      -                    "consecrate"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 6,
      -            "type": "array"
      -          },
      -          "secondaryDeck": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon",
      -                    "locate-and-deny",
      -                    "sensor-sweep",
      -                    "consecrate"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 60,
      -            "type": "array"
      -          },
      -          "secondaryMode": {
      -            "enum": [
      -              "fixed",
      -              "tactical"
      -            ],
      -            "type": "string"
      -          },
      -          "stratagems": {
      -            "items": {
      -              "properties": {
      -                "cp": {
      -                  "maximum": 6,
      -                  "minimum": 0,
      -                  "type": "integer"
      -                },
      -                "detachment": {
      -                  "maxLength": 249,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "limit": {
      -                  "enum": [
      -                    "phase",
      -                    "turn",
      -                    "battle-round",
      -                    "battle",
      -                    "unlimited"
      -                  ],
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "phases": {
      -                  "items": {
      -                    "enum": [
      -                      "command",
      -                      "movement",
      -                      "shooting",
      -                      "charge",
      -                      "fight",
      -                      "end"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "maxItems": 6,
      -                  "type": "array"
      -                },
      -                "turn": {
      -                  "enum": [
      -                    "your-turn",
      -                    "opponent-turn",
      -                    "either"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name",
      -                "cp",
      -                "limit"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 48,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagems",
      -          "secondaries",
      -          "primary",
      -          "secondaryMode"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "deployed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "deploy-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "deployed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "formation": {
      -            "enum": [
      -              "battlefield",
      -              "strategic-reserves",
      -              "deep-strike",
      -              "embarked"
      -            ],
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-unit-formation",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "transportKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "formation"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-painted",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "painted"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "wound-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "damage-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-deployment",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-battlefield",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "terrainLayoutId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId",
      -          "terrainLayoutId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "use-stratagem",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "use-new-orders",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon",
      -                  "locate-and-deny",
      -                  "sensor-sweep",
      -                  "consecrate"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          },
      -          "secondaryKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "stratagemKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagemKey",
      -          "secondaryKey",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "score-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "score-settlement",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "round": {
      -            "maximum": 5,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "scores": {
      -            "items": {
      -              "oneOf": [
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "primary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "final": {
      -                      "properties": {
      -                        "claims": {
      -                          "items": {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "delta": {
      -                          "exclusiveMinimum": 0,
      -                          "maximum": 9007199254740991,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "claims",
      -                        "delta"
      -                      ],
      -                      "type": "object"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "secondary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "key": {
      -                      "maxLength": 64,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "status": {
      -                      "const": "achieved",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "key",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                }
      -              ]
      -            },
      -            "maxItems": 31,
      -            "minItems": 1,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "scores"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-secondary-status",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "status": {
      -            "enum": [
      -              "active",
      -              "achieved",
      -              "discarded",
      -              "returned"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "status"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon",
      -                  "locate-and-deny",
      -                  "sensor-sweep",
      -                  "consecrate"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondaries",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon",
      -                    "locate-and-deny",
      -                    "sensor-sweep",
      -                    "consecrate"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 2,
      -            "minItems": 1,
      -            "type": "array"
      -          },
      -          "selected": {
      -            "const": true,
      -            "type": "boolean"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondaries"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-draw",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-scoring",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "select-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon",
      -                  "locate-and-deny",
      -                  "sensor-sweep",
      -                  "consecrate"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reveal-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "begin-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "adjust-cp",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "gainCp": {
      -            "type": "boolean"
      -          },
      -          "keys": {
      -            "items": {
      -              "maxLength": 64,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "kind": {
      -            "const": "resolve-tactical-hand",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "category": {
      -            "enum": [
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          },
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "score",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "category",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "correct-player",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "resource": {
      -            "enum": [
      -              "cp",
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "playerId",
      -          "resource",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "settle-opponent-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "request-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "cancel-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "pause-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "resume-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "concededBy": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "end-battle",
      -            "type": "string"
      -          },
      -          "reason": {
      -            "enum": [
      -              "completed",
      -              "finished-early",
      -              "conceded"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reopen-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "undo",
      -            "type": "string"
      -          },
      -          "target": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "target"
      -        ],
      -        "type": "object"
      -      }
      -    ]
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "attach-saved-roster",
      -        "type": "string"
      -      },
      -      "playerId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "rosterId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "rosterId"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "oneOf": [
      +      {
      +        "properties": {
      +          "cardKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "select-mission",
      +            "type": "string"
      +          },
      +          "occurrence": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "selection": {
      +            "oneOf": [
      +              {
      +                "properties": {
      +                  "fallback": {
      +                    "type": "boolean"
      +                  },
      +                  "kind": {
      +                    "const": "punishment",
      +                    "type": "string"
      +                  },
      +                  "qualified": {
      +                    "type": "boolean"
      +                  },
      +                  "unavailable": {
      +                    "const": true,
      +                    "type": "boolean"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "playerId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "rosterSeq": {
      +                          "exclusiveMinimum": 0,
      +                          "maximum": 9007199254740991,
      +                          "type": "integer"
      +                        },
      +                        "unitKey": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "playerId",
      +                        "unitKey",
      +                        "rosterSeq"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "units",
      +                  "fallback",
      +                  "qualified"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "guards": {
      +                    "items": {
      +                      "properties": {
      +                        "objective": {
      +                          "properties": {
      +                            "key": {
      +                              "maxLength": 128,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "name": {
      +                              "maxLength": 80,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "key",
      +                            "name"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "unit": {
      +                          "properties": {
      +                            "playerId": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "rosterSeq": {
      +                              "exclusiveMinimum": 0,
      +                              "maximum": 9007199254740991,
      +                              "type": "integer"
      +                            },
      +                            "unitKey": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "playerId",
      +                            "unitKey",
      +                            "rosterSeq"
      +                          ],
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "objective",
      +                        "unit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "guards",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "guards"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "kind": {
      +                    "const": "tempting-target",
      +                    "type": "string"
      +                  },
      +                  "noMansLand": {
      +                    "type": "boolean"
      +                  },
      +                  "notHome": {
      +                    "type": "boolean"
      +                  },
      +                  "objective": {
      +                    "properties": {
      +                      "key": {
      +                        "maxLength": 128,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "key",
      +                      "name"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "objective",
      +                  "notHome",
      +                  "noMansLand"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "kind": {
      +                    "const": "beacon",
      +                    "type": "string"
      +                  },
      +                  "note": {
      +                    "maxLength": 200,
      +                    "type": "string"
      +                  },
      +                  "unit": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "playerId": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "rosterSeq": {
      +                            "exclusiveMinimum": 0,
      +                            "maximum": 9007199254740991,
      +                            "type": "integer"
      +                          },
      +                          "unitKey": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "playerId",
      +                          "unitKey",
      +                          "rosterSeq"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "unit",
      +                  "note"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "allEligible": {
      +                    "type": "boolean"
      +                  },
      +                  "areas": {
      +                    "items": {
      +                      "properties": {
      +                        "key": {
      +                          "maxLength": 128,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 5,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "locate-and-deny",
      +                    "type": "string"
      +                  },
      +                  "outsideZone": {
      +                    "type": "boolean"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "areas",
      +                  "outsideZone",
      +                  "allEligible"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "controlled": {
      +                    "type": "boolean"
      +                  },
      +                  "kind": {
      +                    "const": "sensor-sweep",
      +                    "type": "string"
      +                  },
      +                  "marker": {
      +                    "properties": {
      +                      "key": {
      +                        "maxLength": 128,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "playerId": {
      +                        "maxLength": 64,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "key",
      +                      "name",
      +                      "playerId"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "marker",
      +                  "controlled"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "consecrations": {
      +                    "items": {
      +                      "properties": {
      +                        "objective": {
      +                          "properties": {
      +                            "key": {
      +                              "maxLength": 128,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "name": {
      +                              "maxLength": 80,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "key",
      +                            "name"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "unit": {
      +                          "properties": {
      +                            "playerId": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "rosterSeq": {
      +                              "exclusiveMinimum": 0,
      +                              "maximum": 9007199254740991,
      +                              "type": "integer"
      +                            },
      +                            "unitKey": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "playerId",
      +                            "unitKey",
      +                            "rosterSeq"
      +                          ],
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "objective",
      +                        "unit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "consecrate",
      +                    "type": "string"
      +                  },
      +                  "notHome": {
      +                    "type": "boolean"
      +                  },
      +                  "qualified": {
      +                    "type": "boolean"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "consecrations",
      +                  "qualified",
      +                  "notHome"
      +                ],
      +                "type": "object"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "cardKey",
      +          "occurrence",
      +          "selection"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "clockLimitMinutes": {
      +            "anyOf": [
      +              {
      +                "maximum": 300,
      +                "minimum": 5,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "kind": {
      +            "const": "configure-battle",
      +            "type": "string"
      +          },
      +          "limit": {
      +            "anyOf": [
      +              {
      +                "maximum": 10000,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "missionPackId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "playerCount": {
      +            "anyOf": [
      +              {
      +                "const": 2,
      +                "type": "number"
      +              },
      +              {
      +                "const": 3,
      +                "type": "number"
      +              },
      +              {
      +                "const": 4,
      +                "type": "number"
      +              }
      +            ]
      +          },
      +          "teamBattle": {
      +            "type": "boolean"
      +          },
      +          "terrainLayoutId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "twistId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "limit",
      +          "missionPackId",
      +          "terrainLayoutId",
      +          "twistId",
      +          "clockLimitMinutes"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reset-setup",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "detach-roster",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "eventToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "lock-league-rosters",
      +            "type": "string"
      +          },
      +          "leagueToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "leagueToken"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-setup-step",
      +            "type": "string"
      +          },
      +          "step": {
      +            "maximum": 9,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "step"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-attacker",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "attackerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-first-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "disposition": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-side-disposition",
      +            "type": "string"
      +          },
      +          "side": {
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "side",
      +          "disposition"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "attach-roster",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "prep": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "primary": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "awards": {
      +                            "items": {
      +                              "properties": {
      +                                "criteria": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 2000,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "cumulative": {
      +                                  "type": "boolean"
      +                                },
      +                                "group": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 100,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "max": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maximum": 100,
      +                                      "minimum": 0,
      +                                      "type": "integer"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "mode": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 40,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "per": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 200,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "trigger": {
      +                                  "properties": {
      +                                    "phase": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "playerTurn": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMax": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMin": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "timing": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    }
      +                                  },
      +                                  "required": [
      +                                    "timing",
      +                                    "phase",
      +                                    "playerTurn",
      +                                    "roundMin",
      +                                    "roundMax"
      +                                  ],
      +                                  "type": "object"
      +                                },
      +                                "vp": {
      +                                  "maximum": 100,
      +                                  "minimum": 0,
      +                                  "type": "integer"
      +                                }
      +                              },
      +                              "required": [
      +                                "vp",
      +                                "per",
      +                                "mode",
      +                                "max",
      +                                "group",
      +                                "cumulative",
      +                                "criteria",
      +                                "trigger"
      +                              ],
      +                              "type": "object"
      +                            },
      +                            "maxItems": 20,
      +                            "type": "array"
      +                          },
      +                          "key": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "name": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "selection": {
      +                            "enum": [
      +                              "punishment",
      +                              "guards",
      +                              "tempting-target",
      +                              "beacon",
      +                              "locate-and-deny",
      +                              "sensor-sweep",
      +                              "consecrate"
      +                            ],
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "key",
      +                          "name"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "secondaries": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "selection": {
      +                          "enum": [
      +                            "punishment",
      +                            "guards",
      +                            "tempting-target",
      +                            "beacon",
      +                            "locate-and-deny",
      +                            "sensor-sweep",
      +                            "consecrate"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 6,
      +                    "type": "array"
      +                  },
      +                  "secondaryDeck": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "selection": {
      +                          "enum": [
      +                            "punishment",
      +                            "guards",
      +                            "tempting-target",
      +                            "beacon",
      +                            "locate-and-deny",
      +                            "sensor-sweep",
      +                            "consecrate"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 60,
      +                    "type": "array"
      +                  },
      +                  "secondaryMode": {
      +                    "enum": [
      +                      "fixed",
      +                      "tactical"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "stratagems": {
      +                    "items": {
      +                      "properties": {
      +                        "cp": {
      +                          "maximum": 6,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "detachment": {
      +                          "maxLength": 249,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "limit": {
      +                          "enum": [
      +                            "phase",
      +                            "turn",
      +                            "battle-round",
      +                            "battle",
      +                            "unlimited"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "phases": {
      +                          "items": {
      +                            "enum": [
      +                              "command",
      +                              "movement",
      +                              "shooting",
      +                              "charge",
      +                              "fight",
      +                              "end"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 6,
      +                          "type": "array"
      +                        },
      +                        "turn": {
      +                          "enum": [
      +                            "your-turn",
      +                            "opponent-turn",
      +                            "either"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "cp",
      +                        "limit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 48,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "stratagems",
      +                  "secondaries",
      +                  "primary",
      +                  "secondaryMode"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "roster": {
      +            "properties": {
      +              "built": {
      +                "properties": {
      +                  "catalogueId": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "detachment": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 80,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachmentIds": {
      +                    "items": {
      +                      "maxLength": 128,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "detachmentPointBudget": {
      +                    "anyOf": [
      +                      {
      +                        "maximum": 3,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachments": {
      +                    "items": {
      +                      "properties": {
      +                        "name": {
      +                          "maxLength": 80,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 3,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "name",
      +                        "points"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "disposition": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 64,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "edition": {
      +                    "properties": {
      +                      "description": {
      +                        "maxLength": 240,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "id": {
      +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "slug": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      +                        "type": "string"
      +                      },
      +                      "status": {
      +                        "enum": [
      +                          "preview",
      +                          "released",
      +                          "retired"
      +                        ],
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "id",
      +                      "name",
      +                      "status"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "limit": {
      +                    "maximum": 10000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "picks": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "catalogueId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "choices": {
      +                          "additionalProperties": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 60,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        },
      +                        "nickname": {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        "note": {
      +                          "maxLength": 500,
      +                          "type": "string"
      +                        },
      +                        "spreads": {
      +                          "additionalProperties": {
      +                            "additionalProperties": {
      +                              "maximum": 60,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            "propertyNames": {
      +                              "maxLength": 64,
      +                              "type": "string"
      +                            },
      +                            "type": "object"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "toggles": {
      +                          "additionalProperties": {
      +                            "maximum": 1,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "entryId"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 100,
      +                    "type": "array"
      +                  },
      +                  "revision": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "strategicReserveLimit": {
      +                    "maximum": 5000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "enhancements": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "formationOptions": {
      +                          "items": {
      +                            "enum": [
      +                              "battlefield",
      +                              "strategic-reserves",
      +                              "deep-strike",
      +                              "embarked"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 4,
      +                          "type": "array"
      +                        },
      +                        "group": {
      +                          "enum": [
      +                            "epic-hero",
      +                            "character",
      +                            "battleline",
      +                            "infantry",
      +                            "swarm",
      +                            "mounted",
      +                            "beast",
      +                            "monster",
      +                            "vehicle",
      +                            "drone",
      +                            "transport",
      +                            "fortification",
      +                            "other"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "joined": {
      +                          "items": {
      +                            "properties": {
      +                              "label": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "label",
      +                              "name"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "nickname": {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        "note": {
      +                          "maxLength": 500,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "maximum": 10000,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "prebattleRules": {
      +                          "items": {
      +                            "enum": [
      +                              "infiltrators",
      +                              "scouts"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 2,
      +                          "type": "array"
      +                        },
      +                        "strategicReserveExempt": {
      +                          "type": "boolean"
      +                        },
      +                        "transport": {
      +                          "type": "boolean"
      +                        },
      +                        "transportRule": {
      +                          "maxLength": 4000,
      +                          "type": "string"
      +                        },
      +                        "upgrades": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "wargear": {
      +                          "items": {
      +                            "properties": {
      +                              "count": {
      +                                "maximum": 100,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "name",
      +                              "count"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 200,
      +                          "type": "array"
      +                        },
      +                        "warlord": {
      +                          "type": "boolean"
      +                        },
      +                        "warlordEligible": {
      +                          "type": "boolean"
      +                        },
      +                        "wounds": {
      +                          "maximum": 100,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "points",
      +                        "models"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 200,
      +                    "type": "array"
      +                  },
      +                  "waivedRules": {
      +                    "items": {
      +                      "enum": [
      +                        "points-limit",
      +                        "detachments",
      +                        "detachment-points",
      +                        "kotc-infantry",
      +                        "kotc-warlord",
      +                        "kotc-epic-heroes",
      +                        "kotc-toughness",
      +                        "kotc-datasheet-copies"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "maxItems": 8,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "catalogueId",
      +                  "revision",
      +                  "limit",
      +                  "detachment",
      +                  "disposition",
      +                  "units"
      +                ],
      +                "type": "object"
      +              },
      +              "id": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "type": "string"
      +              },
      +              "reminders": {
      +                "items": {
      +                  "properties": {
      +                    "ability": {
      +                      "maxLength": 80,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "description": {
      +                      "maxLength": 10000,
      +                      "type": "string"
      +                    },
      +                    "key": {
      +                      "maxLength": 240,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "timings": {
      +                      "items": {
      +                        "oneOf": [
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "phase-start",
      +                                  "phase-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "enum": [
      +                                  "command",
      +                                  "movement",
      +                                  "shooting",
      +                                  "charge",
      +                                  "fight",
      +                                  "any"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "turn-start",
      +                                  "turn-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "round-start",
      +                                  "round-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "const": "either",
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          }
      +                        ]
      +                      },
      +                      "maxItems": 10,
      +                      "minItems": 1,
      +                      "type": "array"
      +                    },
      +                    "unit": {
      +                      "properties": {
      +                        "index": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "index",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "whileDestroyed": {
      +                      "type": "boolean"
      +                    }
      +                  },
      +                  "required": [
      +                    "key",
      +                    "ability",
      +                    "description",
      +                    "timings"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 100,
      +                "type": "array"
      +              },
      +              "remindersEnabled": {
      +                "type": "boolean"
      +              },
      +              "text": {
      +                "maxLength": 20000,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "text"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "roster"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "destroyed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "set-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "destroyed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-prep",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "primary": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "awards": {
      +                    "items": {
      +                      "properties": {
      +                        "criteria": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 2000,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "cumulative": {
      +                          "type": "boolean"
      +                        },
      +                        "group": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 100,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "max": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 100,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "mode": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 40,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "per": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 200,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "trigger": {
      +                          "properties": {
      +                            "phase": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "playerTurn": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMax": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMin": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "timing": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            }
      +                          },
      +                          "required": [
      +                            "timing",
      +                            "phase",
      +                            "playerTurn",
      +                            "roundMin",
      +                            "roundMax"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "vp": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "vp",
      +                        "per",
      +                        "mode",
      +                        "max",
      +                        "group",
      +                        "cumulative",
      +                        "criteria",
      +                        "trigger"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "key": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "maxLength": 80,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "selection": {
      +                    "enum": [
      +                      "punishment",
      +                      "guards",
      +                      "tempting-target",
      +                      "beacon",
      +                      "locate-and-deny",
      +                      "sensor-sweep",
      +                      "consecrate"
      +                    ],
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "key",
      +                  "name"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 6,
      +            "type": "array"
      +          },
      +          "secondaryDeck": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 60,
      +            "type": "array"
      +          },
      +          "secondaryMode": {
      +            "enum": [
      +              "fixed",
      +              "tactical"
      +            ],
      +            "type": "string"
      +          },
      +          "stratagems": {
      +            "items": {
      +              "properties": {
      +                "cp": {
      +                  "maximum": 6,
      +                  "minimum": 0,
      +                  "type": "integer"
      +                },
      +                "detachment": {
      +                  "maxLength": 249,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "limit": {
      +                  "enum": [
      +                    "phase",
      +                    "turn",
      +                    "battle-round",
      +                    "battle",
      +                    "unlimited"
      +                  ],
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "phases": {
      +                  "items": {
      +                    "enum": [
      +                      "command",
      +                      "movement",
      +                      "shooting",
      +                      "charge",
      +                      "fight",
      +                      "end"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "maxItems": 6,
      +                  "type": "array"
      +                },
      +                "turn": {
      +                  "enum": [
      +                    "your-turn",
      +                    "opponent-turn",
      +                    "either"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name",
      +                "cp",
      +                "limit"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 48,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagems",
      +          "secondaries",
      +          "primary",
      +          "secondaryMode"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "deployed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "deploy-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "deployed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "formation": {
      +            "enum": [
      +              "battlefield",
      +              "strategic-reserves",
      +              "deep-strike",
      +              "embarked"
      +            ],
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-unit-formation",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "transportKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "formation"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-painted",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "painted"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "wound-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "damage-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-deployment",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-battlefield",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "terrainLayoutId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId",
      +          "terrainLayoutId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "use-stratagem",
      +            "type": "string"
      +          },
      +          "missed": {
      +            "properties": {
      +              "phase": {
      +                "enum": [
      +                  "command",
      +                  "movement",
      +                  "shooting",
      +                  "charge",
      +                  "fight",
      +                  "end"
      +                ],
      +                "type": "string"
      +              },
      +              "round": {
      +                "maximum": 5,
      +                "minimum": 1,
      +                "type": "integer"
      +              },
      +              "turn": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "round",
      +              "phase",
      +              "turn"
      +            ],
      +            "type": "object"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "use-new-orders",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          },
      +          "secondaryKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "stratagemKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagemKey",
      +          "secondaryKey",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "score-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "score-settlement",
      +            "type": "string"
      +          },
      +          "missed": {
      +            "properties": {
      +              "phase": {
      +                "enum": [
      +                  "command",
      +                  "movement",
      +                  "shooting",
      +                  "charge",
      +                  "fight",
      +                  "end"
      +                ],
      +                "type": "string"
      +              },
      +              "round": {
      +                "maximum": 5,
      +                "minimum": 1,
      +                "type": "integer"
      +              },
      +              "turn": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "round",
      +              "phase",
      +              "turn"
      +            ],
      +            "type": "object"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "round": {
      +            "maximum": 5,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "scores": {
      +            "items": {
      +              "oneOf": [
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "primary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "final": {
      +                      "properties": {
      +                        "claims": {
      +                          "items": {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "delta": {
      +                          "exclusiveMinimum": 0,
      +                          "maximum": 9007199254740991,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "claims",
      +                        "delta"
      +                      ],
      +                      "type": "object"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "secondary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "key": {
      +                      "maxLength": 64,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "status": {
      +                      "const": "achieved",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "key",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                }
      +              ]
      +            },
      +            "maxItems": 31,
      +            "minItems": 1,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "scores"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-secondary-status",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "status": {
      +            "enum": [
      +              "active",
      +              "achieved",
      +              "discarded",
      +              "returned"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondaries",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 2,
      +            "minItems": 1,
      +            "type": "array"
      +          },
      +          "selected": {
      +            "const": true,
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondaries"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-draw",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-scoring",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "select-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reveal-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "begin-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "adjust-cp",
      +            "type": "string"
      +          },
      +          "missed": {
      +            "properties": {
      +              "phase": {
      +                "enum": [
      +                  "command",
      +                  "movement",
      +                  "shooting",
      +                  "charge",
      +                  "fight",
      +                  "end"
      +                ],
      +                "type": "string"
      +              },
      +              "round": {
      +                "maximum": 5,
      +                "minimum": 1,
      +                "type": "integer"
      +              },
      +              "turn": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "round",
      +              "phase",
      +              "turn"
      +            ],
      +            "type": "object"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "gainCp": {
      +            "type": "boolean"
      +          },
      +          "keys": {
      +            "items": {
      +              "maxLength": 64,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "kind": {
      +            "const": "resolve-tactical-hand",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "category": {
      +            "enum": [
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          },
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "score",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "category",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "correct-player",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "resource": {
      +            "enum": [
      +              "cp",
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "playerId",
      +          "resource",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "settle-opponent-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "request-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "cancel-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "pause-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "resume-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "concededBy": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "end-battle",
      +            "type": "string"
      +          },
      +          "reason": {
      +            "enum": [
      +              "completed",
      +              "finished-early",
      +              "conceded"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reopen-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "undo",
      +            "type": "string"
      +          },
      +          "target": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "target"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "attach-saved-roster",
      +        "type": "string"
      +      },
      +      "playerId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "rosterId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "rosterId"
      +    ],
      +    "type": "object"
      +  }
      +]
  9. Changed1 schema field changed
    • changedInput schema / properties / command / anyOf
      Previous value: -[
      -  {
      -    "oneOf": [
      -      {
      -        "properties": {
      -          "cardKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "select-mission",
      -            "type": "string"
      -          },
      -          "occurrence": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "selection": {
      -            "oneOf": [
      -              {
      -                "properties": {
      -                  "fallback": {
      -                    "type": "boolean"
      -                  },
      -                  "kind": {
      -                    "const": "punishment",
      -                    "type": "string"
      -                  },
      -                  "qualified": {
      -                    "type": "boolean"
      -                  },
      -                  "unavailable": {
      -                    "const": true,
      -                    "type": "boolean"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "playerId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "rosterSeq": {
      -                          "exclusiveMinimum": 0,
      -                          "maximum": 9007199254740991,
      -                          "type": "integer"
      -                        },
      -                        "unitKey": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "playerId",
      -                        "unitKey",
      -                        "rosterSeq"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "units",
      -                  "fallback",
      -                  "qualified"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "guards": {
      -                    "items": {
      -                      "properties": {
      -                        "objective": {
      -                          "properties": {
      -                            "key": {
      -                              "maxLength": 128,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "name": {
      -                              "maxLength": 80,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "key",
      -                            "name"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "unit": {
      -                          "properties": {
      -                            "playerId": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "rosterSeq": {
      -                              "exclusiveMinimum": 0,
      -                              "maximum": 9007199254740991,
      -                              "type": "integer"
      -                            },
      -                            "unitKey": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "playerId",
      -                            "unitKey",
      -                            "rosterSeq"
      -                          ],
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "objective",
      -                        "unit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "guards",
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "guards"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "kind": {
      -                    "const": "tempting-target",
      -                    "type": "string"
      -                  },
      -                  "noMansLand": {
      -                    "type": "boolean"
      -                  },
      -                  "notHome": {
      -                    "type": "boolean"
      -                  },
      -                  "objective": {
      -                    "properties": {
      -                      "key": {
      -                        "maxLength": 128,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "key",
      -                      "name"
      -                    ],
      -                    "type": "object"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "objective",
      -                  "notHome",
      -                  "noMansLand"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "kind": {
      -                    "const": "beacon",
      -                    "type": "string"
      -                  },
      -                  "note": {
      -                    "maxLength": 200,
      -                    "type": "string"
      -                  },
      -                  "unit": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "playerId": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "rosterSeq": {
      -                            "exclusiveMinimum": 0,
      -                            "maximum": 9007199254740991,
      -                            "type": "integer"
      -                          },
      -                          "unitKey": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "playerId",
      -                          "unitKey",
      -                          "rosterSeq"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "unit",
      -                  "note"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "allEligible": {
      -                    "type": "boolean"
      -                  },
      -                  "areas": {
      -                    "items": {
      -                      "properties": {
      -                        "key": {
      -                          "maxLength": 128,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 5,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "locate-and-deny",
      -                    "type": "string"
      -                  },
      -                  "outsideZone": {
      -                    "type": "boolean"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "areas",
      -                  "outsideZone",
      -                  "allEligible"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "controlled": {
      -                    "type": "boolean"
      -                  },
      -                  "kind": {
      -                    "const": "sensor-sweep",
      -                    "type": "string"
      -                  },
      -                  "marker": {
      -                    "properties": {
      -                      "key": {
      -                        "maxLength": 128,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "playerId": {
      -                        "maxLength": 64,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "key",
      -                      "name",
      -                      "playerId"
      -                    ],
      -                    "type": "object"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "marker",
      -                  "controlled"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "consecrations": {
      -                    "items": {
      -                      "properties": {
      -                        "objective": {
      -                          "properties": {
      -                            "key": {
      -                              "maxLength": 128,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "name": {
      -                              "maxLength": 80,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "key",
      -                            "name"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "unit": {
      -                          "properties": {
      -                            "playerId": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "rosterSeq": {
      -                              "exclusiveMinimum": 0,
      -                              "maximum": 9007199254740991,
      -                              "type": "integer"
      -                            },
      -                            "unitKey": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "playerId",
      -                            "unitKey",
      -                            "rosterSeq"
      -                          ],
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "objective",
      -                        "unit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "consecrate",
      -                    "type": "string"
      -                  },
      -                  "notHome": {
      -                    "type": "boolean"
      -                  },
      -                  "qualified": {
      -                    "type": "boolean"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "consecrations",
      -                  "qualified",
      -                  "notHome"
      -                ],
      -                "type": "object"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "cardKey",
      -          "occurrence",
      -          "selection"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "clockLimitMinutes": {
      -            "anyOf": [
      -              {
      -                "maximum": 300,
      -                "minimum": 5,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "kind": {
      -            "const": "configure-battle",
      -            "type": "string"
      -          },
      -          "limit": {
      -            "anyOf": [
      -              {
      -                "maximum": 10000,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "missionPackId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "playerCount": {
      -            "anyOf": [
      -              {
      -                "const": 2,
      -                "type": "number"
      -              },
      -              {
      -                "const": 3,
      -                "type": "number"
      -              },
      -              {
      -                "const": 4,
      -                "type": "number"
      -              }
      -            ]
      -          },
      -          "teamBattle": {
      -            "type": "boolean"
      -          },
      -          "terrainLayoutId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "twistId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "limit",
      -          "missionPackId",
      -          "terrainLayoutId",
      -          "twistId",
      -          "clockLimitMinutes"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reset-setup",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "detach-roster",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "eventToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "lock-league-rosters",
      -            "type": "string"
      -          },
      -          "leagueToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "leagueToken"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-setup-step",
      -            "type": "string"
      -          },
      -          "step": {
      -            "maximum": 9,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "step"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-attacker",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "attackerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-first-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "disposition": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-side-disposition",
      -            "type": "string"
      -          },
      -          "side": {
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "side",
      -          "disposition"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "attach-roster",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "prep": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "primary": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "awards": {
      -                            "items": {
      -                              "properties": {
      -                                "criteria": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 2000,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "cumulative": {
      -                                  "type": "boolean"
      -                                },
      -                                "group": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 100,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "max": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maximum": 100,
      -                                      "minimum": 0,
      -                                      "type": "integer"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "mode": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 40,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "per": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 200,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "trigger": {
      -                                  "properties": {
      -                                    "phase": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "playerTurn": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMax": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMin": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "timing": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    }
      -                                  },
      -                                  "required": [
      -                                    "timing",
      -                                    "phase",
      -                                    "playerTurn",
      -                                    "roundMin",
      -                                    "roundMax"
      -                                  ],
      -                                  "type": "object"
      -                                },
      -                                "vp": {
      -                                  "maximum": 100,
      -                                  "minimum": 0,
      -                                  "type": "integer"
      -                                }
      -                              },
      -                              "required": [
      -                                "vp",
      -                                "per",
      -                                "mode",
      -                                "max",
      -                                "group",
      -                                "cumulative",
      -                                "criteria",
      -                                "trigger"
      -                              ],
      -                              "type": "object"
      -                            },
      -                            "maxItems": 20,
      -                            "type": "array"
      -                          },
      -                          "key": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "name": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "selection": {
      -                            "enum": [
      -                              "punishment",
      -                              "guards",
      -                              "tempting-target",
      -                              "beacon",
      -                              "locate-and-deny",
      -                              "sensor-sweep",
      -                              "consecrate"
      -                            ],
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "key",
      -                          "name"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "secondaries": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "selection": {
      -                          "enum": [
      -                            "punishment",
      -                            "guards",
      -                            "tempting-target",
      -                            "beacon",
      -                            "locate-and-deny",
      -                            "sensor-sweep",
      -                            "consecrate"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 6,
      -                    "type": "array"
      -                  },
      -                  "secondaryDeck": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "selection": {
      -                          "enum": [
      -                            "punishment",
      -                            "guards",
      -                            "tempting-target",
      -                            "beacon",
      -                            "locate-and-deny",
      -                            "sensor-sweep",
      -                            "consecrate"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 60,
      -                    "type": "array"
      -                  },
      -                  "secondaryMode": {
      -                    "enum": [
      -                      "fixed",
      -                      "tactical"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "stratagems": {
      -                    "items": {
      -                      "properties": {
      -                        "cp": {
      -                          "maximum": 6,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "detachment": {
      -                          "maxLength": 249,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "limit": {
      -                          "enum": [
      -                            "phase",
      -                            "turn",
      -                            "battle-round",
      -                            "battle",
      -                            "unlimited"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "phases": {
      -                          "items": {
      -                            "enum": [
      -                              "command",
      -                              "movement",
      -                              "shooting",
      -                              "charge",
      -                              "fight",
      -                              "end"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 6,
      -                          "type": "array"
      -                        },
      -                        "turn": {
      -                          "enum": [
      -                            "your-turn",
      -                            "opponent-turn",
      -                            "either"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "cp",
      -                        "limit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 48,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "stratagems",
      -                  "secondaries",
      -                  "primary",
      -                  "secondaryMode"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "roster": {
      -            "properties": {
      -              "built": {
      -                "properties": {
      -                  "catalogueId": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "detachment": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 80,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachmentIds": {
      -                    "items": {
      -                      "maxLength": 128,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "detachmentPointBudget": {
      -                    "anyOf": [
      -                      {
      -                        "maximum": 3,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachments": {
      -                    "items": {
      -                      "properties": {
      -                        "name": {
      -                          "maxLength": 80,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 3,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "name",
      -                        "points"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "disposition": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 64,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "edition": {
      -                    "properties": {
      -                      "description": {
      -                        "maxLength": 240,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "id": {
      -                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "slug": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      -                        "type": "string"
      -                      },
      -                      "status": {
      -                        "enum": [
      -                          "preview",
      -                          "released",
      -                          "retired"
      -                        ],
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "id",
      -                      "name",
      -                      "status"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "limit": {
      -                    "maximum": 10000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "picks": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "catalogueId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "choices": {
      -                          "additionalProperties": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 60,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        },
      -                        "spreads": {
      -                          "additionalProperties": {
      -                            "additionalProperties": {
      -                              "maximum": 60,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            "propertyNames": {
      -                              "maxLength": 64,
      -                              "type": "string"
      -                            },
      -                            "type": "object"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "toggles": {
      -                          "additionalProperties": {
      -                            "maximum": 1,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "entryId"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 100,
      -                    "type": "array"
      -                  },
      -                  "revision": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "strategicReserveLimit": {
      -                    "maximum": 5000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "enhancements": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "formationOptions": {
      -                          "items": {
      -                            "enum": [
      -                              "battlefield",
      -                              "strategic-reserves",
      -                              "deep-strike",
      -                              "embarked"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 4,
      -                          "type": "array"
      -                        },
      -                        "group": {
      -                          "enum": [
      -                            "epic-hero",
      -                            "character",
      -                            "battleline",
      -                            "infantry",
      -                            "swarm",
      -                            "mounted",
      -                            "beast",
      -                            "monster",
      -                            "vehicle",
      -                            "drone",
      -                            "transport",
      -                            "fortification",
      -                            "other"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "joined": {
      -                          "items": {
      -                            "properties": {
      -                              "label": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "label",
      -                              "name"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "maximum": 10000,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "prebattleRules": {
      -                          "items": {
      -                            "enum": [
      -                              "infiltrators",
      -                              "scouts"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 2,
      -                          "type": "array"
      -                        },
      -                        "strategicReserveExempt": {
      -                          "type": "boolean"
      -                        },
      -                        "transport": {
      -                          "type": "boolean"
      -                        },
      -                        "transportRule": {
      -                          "maxLength": 4000,
      -                          "type": "string"
      -                        },
      -                        "upgrades": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "wargear": {
      -                          "items": {
      -                            "properties": {
      -                              "count": {
      -                                "maximum": 100,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "name",
      -                              "count"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 200,
      -                          "type": "array"
      -                        },
      -                        "warlord": {
      -                          "type": "boolean"
      -                        },
      -                        "warlordEligible": {
      -                          "type": "boolean"
      -                        },
      -                        "wounds": {
      -                          "maximum": 100,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "points",
      -                        "models"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 200,
      -                    "type": "array"
      -                  },
      -                  "waivedRules": {
      -                    "items": {
      -                      "enum": [
      -                        "points-limit",
      -                        "detachments",
      -                        "detachment-points",
      -                        "kotc-infantry",
      -                        "kotc-warlord",
      -                        "kotc-epic-heroes",
      -                        "kotc-toughness",
      -                        "kotc-datasheet-copies"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "maxItems": 8,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "catalogueId",
      -                  "revision",
      -                  "limit",
      -                  "detachment",
      -                  "disposition",
      -                  "units"
      -                ],
      -                "type": "object"
      -              },
      -              "id": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "type": "string"
      -              },
      -              "reminders": {
      -                "items": {
      -                  "properties": {
      -                    "ability": {
      -                      "maxLength": 80,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "description": {
      -                      "maxLength": 10000,
      -                      "type": "string"
      -                    },
      -                    "key": {
      -                      "maxLength": 240,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "timings": {
      -                      "items": {
      -                        "oneOf": [
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "phase-start",
      -                                  "phase-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "enum": [
      -                                  "command",
      -                                  "movement",
      -                                  "shooting",
      -                                  "charge",
      -                                  "fight",
      -                                  "any"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "turn-start",
      -                                  "turn-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "round-start",
      -                                  "round-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "const": "either",
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          }
      -                        ]
      -                      },
      -                      "maxItems": 10,
      -                      "minItems": 1,
      -                      "type": "array"
      -                    },
      -                    "unit": {
      -                      "properties": {
      -                        "index": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "index",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "whileDestroyed": {
      -                      "type": "boolean"
      -                    }
      -                  },
      -                  "required": [
      -                    "key",
      -                    "ability",
      -                    "description",
      -                    "timings"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 100,
      -                "type": "array"
      -              },
      -              "remindersEnabled": {
      -                "type": "boolean"
      -              },
      -              "text": {
      -                "maxLength": 20000,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "name",
      -              "text"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "roster"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "destroyed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "set-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "destroyed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-prep",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "primary": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "awards": {
      -                    "items": {
      -                      "properties": {
      -                        "criteria": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 2000,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "cumulative": {
      -                          "type": "boolean"
      -                        },
      -                        "group": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 100,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "max": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 100,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "mode": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 40,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "per": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 200,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "trigger": {
      -                          "properties": {
      -                            "phase": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "playerTurn": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMax": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMin": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "timing": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            }
      -                          },
      -                          "required": [
      -                            "timing",
      -                            "phase",
      -                            "playerTurn",
      -                            "roundMin",
      -                            "roundMax"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "vp": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "vp",
      -                        "per",
      -                        "mode",
      -                        "max",
      -                        "group",
      -                        "cumulative",
      -                        "criteria",
      -                        "trigger"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "key": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "name": {
      -                    "maxLength": 80,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "selection": {
      -                    "enum": [
      -                      "punishment",
      -                      "guards",
      -                      "tempting-target",
      -                      "beacon",
      -                      "locate-and-deny",
      -                      "sensor-sweep",
      -                      "consecrate"
      -                    ],
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "key",
      -                  "name"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon",
      -                    "locate-and-deny",
      -                    "sensor-sweep",
      -                    "consecrate"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 6,
      -            "type": "array"
      -          },
      -          "secondaryDeck": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon",
      -                    "locate-and-deny",
      -                    "sensor-sweep",
      -                    "consecrate"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 60,
      -            "type": "array"
      -          },
      -          "secondaryMode": {
      -            "enum": [
      -              "fixed",
      -              "tactical"
      -            ],
      -            "type": "string"
      -          },
      -          "stratagems": {
      -            "items": {
      -              "properties": {
      -                "cp": {
      -                  "maximum": 6,
      -                  "minimum": 0,
      -                  "type": "integer"
      -                },
      -                "detachment": {
      -                  "maxLength": 249,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "limit": {
      -                  "enum": [
      -                    "phase",
      -                    "turn",
      -                    "battle-round",
      -                    "battle",
      -                    "unlimited"
      -                  ],
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "phases": {
      -                  "items": {
      -                    "enum": [
      -                      "command",
      -                      "movement",
      -                      "shooting",
      -                      "charge",
      -                      "fight",
      -                      "end"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "maxItems": 6,
      -                  "type": "array"
      -                },
      -                "turn": {
      -                  "enum": [
      -                    "your-turn",
      -                    "opponent-turn",
      -                    "either"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name",
      -                "cp",
      -                "limit"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 48,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagems",
      -          "secondaries",
      -          "primary",
      -          "secondaryMode"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "deployed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "deploy-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "deployed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "formation": {
      -            "enum": [
      -              "battlefield",
      -              "strategic-reserves",
      -              "deep-strike",
      -              "embarked"
      -            ],
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-unit-formation",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "transportKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "formation"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-painted",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "painted"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "wound-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "damage-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-deployment",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-battlefield",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "terrainLayoutId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId",
      -          "terrainLayoutId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "use-stratagem",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "use-new-orders",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon",
      -                  "locate-and-deny",
      -                  "sensor-sweep",
      -                  "consecrate"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          },
      -          "secondaryKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "stratagemKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagemKey",
      -          "secondaryKey",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "score-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "score-settlement",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "round": {
      -            "maximum": 5,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "scores": {
      -            "items": {
      -              "oneOf": [
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "primary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "final": {
      -                      "properties": {
      -                        "claims": {
      -                          "items": {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "delta": {
      -                          "exclusiveMinimum": 0,
      -                          "maximum": 9007199254740991,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "claims",
      -                        "delta"
      -                      ],
      -                      "type": "object"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "secondary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "key": {
      -                      "maxLength": 64,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "status": {
      -                      "const": "achieved",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "key",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                }
      -              ]
      -            },
      -            "maxItems": 31,
      -            "minItems": 1,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "scores"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-secondary-status",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "status": {
      -            "enum": [
      -              "active",
      -              "achieved",
      -              "discarded",
      -              "returned"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "status"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon",
      -                  "locate-and-deny",
      -                  "sensor-sweep",
      -                  "consecrate"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondaries",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon",
      -                    "locate-and-deny",
      -                    "sensor-sweep",
      -                    "consecrate"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 2,
      -            "minItems": 1,
      -            "type": "array"
      -          },
      -          "selected": {
      -            "const": true,
      -            "type": "boolean"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondaries"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-draw",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-scoring",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "select-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon",
      -                  "locate-and-deny",
      -                  "sensor-sweep",
      -                  "consecrate"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reveal-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "begin-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "adjust-cp",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "gainCp": {
      -            "type": "boolean"
      -          },
      -          "keys": {
      -            "items": {
      -              "maxLength": 64,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "kind": {
      -            "const": "resolve-tactical-hand",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "category": {
      -            "enum": [
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          },
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "score",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "category",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "correct-player",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "resource": {
      -            "enum": [
      -              "cp",
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "playerId",
      -          "resource",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "settle-opponent-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "request-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "cancel-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "pause-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "resume-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "concededBy": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "end-battle",
      -            "type": "string"
      -          },
      -          "reason": {
      -            "enum": [
      -              "completed",
      -              "finished-early",
      -              "conceded"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reopen-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "undo",
      -            "type": "string"
      -          },
      -          "target": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "target"
      -        ],
      -        "type": "object"
      -      }
      -    ]
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "attach-saved-roster",
      -        "type": "string"
      -      },
      -      "playerId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "rosterId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "rosterId"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "oneOf": [
      +      {
      +        "properties": {
      +          "cardKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "select-mission",
      +            "type": "string"
      +          },
      +          "occurrence": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "selection": {
      +            "oneOf": [
      +              {
      +                "properties": {
      +                  "fallback": {
      +                    "type": "boolean"
      +                  },
      +                  "kind": {
      +                    "const": "punishment",
      +                    "type": "string"
      +                  },
      +                  "qualified": {
      +                    "type": "boolean"
      +                  },
      +                  "unavailable": {
      +                    "const": true,
      +                    "type": "boolean"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "playerId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "rosterSeq": {
      +                          "exclusiveMinimum": 0,
      +                          "maximum": 9007199254740991,
      +                          "type": "integer"
      +                        },
      +                        "unitKey": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "playerId",
      +                        "unitKey",
      +                        "rosterSeq"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "units",
      +                  "fallback",
      +                  "qualified"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "guards": {
      +                    "items": {
      +                      "properties": {
      +                        "objective": {
      +                          "properties": {
      +                            "key": {
      +                              "maxLength": 128,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "name": {
      +                              "maxLength": 80,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "key",
      +                            "name"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "unit": {
      +                          "properties": {
      +                            "playerId": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "rosterSeq": {
      +                              "exclusiveMinimum": 0,
      +                              "maximum": 9007199254740991,
      +                              "type": "integer"
      +                            },
      +                            "unitKey": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "playerId",
      +                            "unitKey",
      +                            "rosterSeq"
      +                          ],
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "objective",
      +                        "unit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "guards",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "guards"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "kind": {
      +                    "const": "tempting-target",
      +                    "type": "string"
      +                  },
      +                  "noMansLand": {
      +                    "type": "boolean"
      +                  },
      +                  "notHome": {
      +                    "type": "boolean"
      +                  },
      +                  "objective": {
      +                    "properties": {
      +                      "key": {
      +                        "maxLength": 128,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "key",
      +                      "name"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "objective",
      +                  "notHome",
      +                  "noMansLand"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "kind": {
      +                    "const": "beacon",
      +                    "type": "string"
      +                  },
      +                  "note": {
      +                    "maxLength": 200,
      +                    "type": "string"
      +                  },
      +                  "unit": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "playerId": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "rosterSeq": {
      +                            "exclusiveMinimum": 0,
      +                            "maximum": 9007199254740991,
      +                            "type": "integer"
      +                          },
      +                          "unitKey": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "playerId",
      +                          "unitKey",
      +                          "rosterSeq"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "unit",
      +                  "note"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "allEligible": {
      +                    "type": "boolean"
      +                  },
      +                  "areas": {
      +                    "items": {
      +                      "properties": {
      +                        "key": {
      +                          "maxLength": 128,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 5,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "locate-and-deny",
      +                    "type": "string"
      +                  },
      +                  "outsideZone": {
      +                    "type": "boolean"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "areas",
      +                  "outsideZone",
      +                  "allEligible"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "controlled": {
      +                    "type": "boolean"
      +                  },
      +                  "kind": {
      +                    "const": "sensor-sweep",
      +                    "type": "string"
      +                  },
      +                  "marker": {
      +                    "properties": {
      +                      "key": {
      +                        "maxLength": 128,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "playerId": {
      +                        "maxLength": 64,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "key",
      +                      "name",
      +                      "playerId"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "marker",
      +                  "controlled"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "consecrations": {
      +                    "items": {
      +                      "properties": {
      +                        "objective": {
      +                          "properties": {
      +                            "key": {
      +                              "maxLength": 128,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "name": {
      +                              "maxLength": 80,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "key",
      +                            "name"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "unit": {
      +                          "properties": {
      +                            "playerId": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "rosterSeq": {
      +                              "exclusiveMinimum": 0,
      +                              "maximum": 9007199254740991,
      +                              "type": "integer"
      +                            },
      +                            "unitKey": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "playerId",
      +                            "unitKey",
      +                            "rosterSeq"
      +                          ],
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "objective",
      +                        "unit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "consecrate",
      +                    "type": "string"
      +                  },
      +                  "notHome": {
      +                    "type": "boolean"
      +                  },
      +                  "qualified": {
      +                    "type": "boolean"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "consecrations",
      +                  "qualified",
      +                  "notHome"
      +                ],
      +                "type": "object"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "cardKey",
      +          "occurrence",
      +          "selection"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "clockLimitMinutes": {
      +            "anyOf": [
      +              {
      +                "maximum": 300,
      +                "minimum": 5,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "kind": {
      +            "const": "configure-battle",
      +            "type": "string"
      +          },
      +          "limit": {
      +            "anyOf": [
      +              {
      +                "maximum": 10000,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "missionPackId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "playerCount": {
      +            "anyOf": [
      +              {
      +                "const": 2,
      +                "type": "number"
      +              },
      +              {
      +                "const": 3,
      +                "type": "number"
      +              },
      +              {
      +                "const": 4,
      +                "type": "number"
      +              }
      +            ]
      +          },
      +          "teamBattle": {
      +            "type": "boolean"
      +          },
      +          "terrainLayoutId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "twistId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "limit",
      +          "missionPackId",
      +          "terrainLayoutId",
      +          "twistId",
      +          "clockLimitMinutes"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reset-setup",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "detach-roster",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "eventToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "lock-league-rosters",
      +            "type": "string"
      +          },
      +          "leagueToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "leagueToken"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-setup-step",
      +            "type": "string"
      +          },
      +          "step": {
      +            "maximum": 9,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "step"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-attacker",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "attackerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-first-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "disposition": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-side-disposition",
      +            "type": "string"
      +          },
      +          "side": {
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "side",
      +          "disposition"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "attach-roster",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "prep": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "primary": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "awards": {
      +                            "items": {
      +                              "properties": {
      +                                "criteria": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 2000,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "cumulative": {
      +                                  "type": "boolean"
      +                                },
      +                                "group": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 100,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "max": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maximum": 100,
      +                                      "minimum": 0,
      +                                      "type": "integer"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "mode": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 40,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "per": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 200,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "trigger": {
      +                                  "properties": {
      +                                    "phase": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "playerTurn": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMax": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMin": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "timing": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    }
      +                                  },
      +                                  "required": [
      +                                    "timing",
      +                                    "phase",
      +                                    "playerTurn",
      +                                    "roundMin",
      +                                    "roundMax"
      +                                  ],
      +                                  "type": "object"
      +                                },
      +                                "vp": {
      +                                  "maximum": 100,
      +                                  "minimum": 0,
      +                                  "type": "integer"
      +                                }
      +                              },
      +                              "required": [
      +                                "vp",
      +                                "per",
      +                                "mode",
      +                                "max",
      +                                "group",
      +                                "cumulative",
      +                                "criteria",
      +                                "trigger"
      +                              ],
      +                              "type": "object"
      +                            },
      +                            "maxItems": 20,
      +                            "type": "array"
      +                          },
      +                          "key": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "name": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "selection": {
      +                            "enum": [
      +                              "punishment",
      +                              "guards",
      +                              "tempting-target",
      +                              "beacon",
      +                              "locate-and-deny",
      +                              "sensor-sweep",
      +                              "consecrate"
      +                            ],
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "key",
      +                          "name"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "secondaries": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "selection": {
      +                          "enum": [
      +                            "punishment",
      +                            "guards",
      +                            "tempting-target",
      +                            "beacon",
      +                            "locate-and-deny",
      +                            "sensor-sweep",
      +                            "consecrate"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 6,
      +                    "type": "array"
      +                  },
      +                  "secondaryDeck": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "selection": {
      +                          "enum": [
      +                            "punishment",
      +                            "guards",
      +                            "tempting-target",
      +                            "beacon",
      +                            "locate-and-deny",
      +                            "sensor-sweep",
      +                            "consecrate"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 60,
      +                    "type": "array"
      +                  },
      +                  "secondaryMode": {
      +                    "enum": [
      +                      "fixed",
      +                      "tactical"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "stratagems": {
      +                    "items": {
      +                      "properties": {
      +                        "cp": {
      +                          "maximum": 6,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "detachment": {
      +                          "maxLength": 249,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "limit": {
      +                          "enum": [
      +                            "phase",
      +                            "turn",
      +                            "battle-round",
      +                            "battle",
      +                            "unlimited"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "phases": {
      +                          "items": {
      +                            "enum": [
      +                              "command",
      +                              "movement",
      +                              "shooting",
      +                              "charge",
      +                              "fight",
      +                              "end"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 6,
      +                          "type": "array"
      +                        },
      +                        "turn": {
      +                          "enum": [
      +                            "your-turn",
      +                            "opponent-turn",
      +                            "either"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "cp",
      +                        "limit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 48,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "stratagems",
      +                  "secondaries",
      +                  "primary",
      +                  "secondaryMode"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "roster": {
      +            "properties": {
      +              "built": {
      +                "properties": {
      +                  "catalogueId": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "detachment": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 80,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachmentIds": {
      +                    "items": {
      +                      "maxLength": 128,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "detachmentPointBudget": {
      +                    "anyOf": [
      +                      {
      +                        "maximum": 3,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachments": {
      +                    "items": {
      +                      "properties": {
      +                        "name": {
      +                          "maxLength": 80,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 3,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "name",
      +                        "points"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "disposition": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 64,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "edition": {
      +                    "properties": {
      +                      "description": {
      +                        "maxLength": 240,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "id": {
      +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "slug": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      +                        "type": "string"
      +                      },
      +                      "status": {
      +                        "enum": [
      +                          "preview",
      +                          "released",
      +                          "retired"
      +                        ],
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "id",
      +                      "name",
      +                      "status"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "limit": {
      +                    "maximum": 10000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "picks": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "catalogueId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "choices": {
      +                          "additionalProperties": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 60,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        },
      +                        "nickname": {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        "note": {
      +                          "maxLength": 500,
      +                          "type": "string"
      +                        },
      +                        "spreads": {
      +                          "additionalProperties": {
      +                            "additionalProperties": {
      +                              "maximum": 60,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            "propertyNames": {
      +                              "maxLength": 64,
      +                              "type": "string"
      +                            },
      +                            "type": "object"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "toggles": {
      +                          "additionalProperties": {
      +                            "maximum": 1,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "entryId"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 100,
      +                    "type": "array"
      +                  },
      +                  "revision": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "strategicReserveLimit": {
      +                    "maximum": 5000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "enhancements": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "formationOptions": {
      +                          "items": {
      +                            "enum": [
      +                              "battlefield",
      +                              "strategic-reserves",
      +                              "deep-strike",
      +                              "embarked"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 4,
      +                          "type": "array"
      +                        },
      +                        "group": {
      +                          "enum": [
      +                            "epic-hero",
      +                            "character",
      +                            "battleline",
      +                            "infantry",
      +                            "swarm",
      +                            "mounted",
      +                            "beast",
      +                            "monster",
      +                            "vehicle",
      +                            "drone",
      +                            "transport",
      +                            "fortification",
      +                            "other"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "joined": {
      +                          "items": {
      +                            "properties": {
      +                              "label": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "label",
      +                              "name"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "nickname": {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        "note": {
      +                          "maxLength": 500,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "maximum": 10000,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "prebattleRules": {
      +                          "items": {
      +                            "enum": [
      +                              "infiltrators",
      +                              "scouts"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 2,
      +                          "type": "array"
      +                        },
      +                        "strategicReserveExempt": {
      +                          "type": "boolean"
      +                        },
      +                        "transport": {
      +                          "type": "boolean"
      +                        },
      +                        "transportRule": {
      +                          "maxLength": 4000,
      +                          "type": "string"
      +                        },
      +                        "upgrades": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "wargear": {
      +                          "items": {
      +                            "properties": {
      +                              "count": {
      +                                "maximum": 100,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "name",
      +                              "count"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 200,
      +                          "type": "array"
      +                        },
      +                        "warlord": {
      +                          "type": "boolean"
      +                        },
      +                        "warlordEligible": {
      +                          "type": "boolean"
      +                        },
      +                        "wounds": {
      +                          "maximum": 100,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "points",
      +                        "models"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 200,
      +                    "type": "array"
      +                  },
      +                  "waivedRules": {
      +                    "items": {
      +                      "enum": [
      +                        "points-limit",
      +                        "detachments",
      +                        "detachment-points",
      +                        "kotc-infantry",
      +                        "kotc-warlord",
      +                        "kotc-epic-heroes",
      +                        "kotc-toughness",
      +                        "kotc-datasheet-copies"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "maxItems": 8,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "catalogueId",
      +                  "revision",
      +                  "limit",
      +                  "detachment",
      +                  "disposition",
      +                  "units"
      +                ],
      +                "type": "object"
      +              },
      +              "id": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "type": "string"
      +              },
      +              "reminders": {
      +                "items": {
      +                  "properties": {
      +                    "ability": {
      +                      "maxLength": 80,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "description": {
      +                      "maxLength": 10000,
      +                      "type": "string"
      +                    },
      +                    "key": {
      +                      "maxLength": 240,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "timings": {
      +                      "items": {
      +                        "oneOf": [
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "phase-start",
      +                                  "phase-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "enum": [
      +                                  "command",
      +                                  "movement",
      +                                  "shooting",
      +                                  "charge",
      +                                  "fight",
      +                                  "any"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "turn-start",
      +                                  "turn-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "round-start",
      +                                  "round-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "const": "either",
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          }
      +                        ]
      +                      },
      +                      "maxItems": 10,
      +                      "minItems": 1,
      +                      "type": "array"
      +                    },
      +                    "unit": {
      +                      "properties": {
      +                        "index": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "index",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "whileDestroyed": {
      +                      "type": "boolean"
      +                    }
      +                  },
      +                  "required": [
      +                    "key",
      +                    "ability",
      +                    "description",
      +                    "timings"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 100,
      +                "type": "array"
      +              },
      +              "remindersEnabled": {
      +                "type": "boolean"
      +              },
      +              "text": {
      +                "maxLength": 20000,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "text"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "roster"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "destroyed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "set-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "destroyed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-prep",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "primary": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "awards": {
      +                    "items": {
      +                      "properties": {
      +                        "criteria": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 2000,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "cumulative": {
      +                          "type": "boolean"
      +                        },
      +                        "group": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 100,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "max": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 100,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "mode": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 40,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "per": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 200,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "trigger": {
      +                          "properties": {
      +                            "phase": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "playerTurn": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMax": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMin": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "timing": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            }
      +                          },
      +                          "required": [
      +                            "timing",
      +                            "phase",
      +                            "playerTurn",
      +                            "roundMin",
      +                            "roundMax"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "vp": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "vp",
      +                        "per",
      +                        "mode",
      +                        "max",
      +                        "group",
      +                        "cumulative",
      +                        "criteria",
      +                        "trigger"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "key": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "maxLength": 80,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "selection": {
      +                    "enum": [
      +                      "punishment",
      +                      "guards",
      +                      "tempting-target",
      +                      "beacon",
      +                      "locate-and-deny",
      +                      "sensor-sweep",
      +                      "consecrate"
      +                    ],
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "key",
      +                  "name"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 6,
      +            "type": "array"
      +          },
      +          "secondaryDeck": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 60,
      +            "type": "array"
      +          },
      +          "secondaryMode": {
      +            "enum": [
      +              "fixed",
      +              "tactical"
      +            ],
      +            "type": "string"
      +          },
      +          "stratagems": {
      +            "items": {
      +              "properties": {
      +                "cp": {
      +                  "maximum": 6,
      +                  "minimum": 0,
      +                  "type": "integer"
      +                },
      +                "detachment": {
      +                  "maxLength": 249,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "limit": {
      +                  "enum": [
      +                    "phase",
      +                    "turn",
      +                    "battle-round",
      +                    "battle",
      +                    "unlimited"
      +                  ],
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "phases": {
      +                  "items": {
      +                    "enum": [
      +                      "command",
      +                      "movement",
      +                      "shooting",
      +                      "charge",
      +                      "fight",
      +                      "end"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "maxItems": 6,
      +                  "type": "array"
      +                },
      +                "turn": {
      +                  "enum": [
      +                    "your-turn",
      +                    "opponent-turn",
      +                    "either"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name",
      +                "cp",
      +                "limit"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 48,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagems",
      +          "secondaries",
      +          "primary",
      +          "secondaryMode"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "deployed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "deploy-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "deployed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "formation": {
      +            "enum": [
      +              "battlefield",
      +              "strategic-reserves",
      +              "deep-strike",
      +              "embarked"
      +            ],
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-unit-formation",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "transportKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "formation"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-painted",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "painted"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "wound-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "damage-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-deployment",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-battlefield",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "terrainLayoutId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId",
      +          "terrainLayoutId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "use-stratagem",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "use-new-orders",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          },
      +          "secondaryKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "stratagemKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagemKey",
      +          "secondaryKey",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "score-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "score-settlement",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "round": {
      +            "maximum": 5,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "scores": {
      +            "items": {
      +              "oneOf": [
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "primary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "final": {
      +                      "properties": {
      +                        "claims": {
      +                          "items": {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "delta": {
      +                          "exclusiveMinimum": 0,
      +                          "maximum": 9007199254740991,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "claims",
      +                        "delta"
      +                      ],
      +                      "type": "object"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "secondary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "key": {
      +                      "maxLength": 64,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "status": {
      +                      "const": "achieved",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "key",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                }
      +              ]
      +            },
      +            "maxItems": 31,
      +            "minItems": 1,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "scores"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-secondary-status",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "status": {
      +            "enum": [
      +              "active",
      +              "achieved",
      +              "discarded",
      +              "returned"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondaries",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 2,
      +            "minItems": 1,
      +            "type": "array"
      +          },
      +          "selected": {
      +            "const": true,
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondaries"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-draw",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-scoring",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "select-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reveal-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "begin-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "adjust-cp",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "gainCp": {
      +            "type": "boolean"
      +          },
      +          "keys": {
      +            "items": {
      +              "maxLength": 64,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "kind": {
      +            "const": "resolve-tactical-hand",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "category": {
      +            "enum": [
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          },
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "score",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "category",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "correct-player",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "resource": {
      +            "enum": [
      +              "cp",
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "playerId",
      +          "resource",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "settle-opponent-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "request-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "cancel-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "pause-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "resume-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "concededBy": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "end-battle",
      +            "type": "string"
      +          },
      +          "reason": {
      +            "enum": [
      +              "completed",
      +              "finished-early",
      +              "conceded"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reopen-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "undo",
      +            "type": "string"
      +          },
      +          "target": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "target"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "attach-saved-roster",
      +        "type": "string"
      +      },
      +      "playerId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "rosterId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "rosterId"
      +    ],
      +    "type": "object"
      +  }
      +]
  10. Changed1 schema field changed
    • changedInput schema / properties / command / anyOf
      Previous value: -[
      -  {
      -    "oneOf": [
      -      {
      -        "properties": {
      -          "cardKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "select-mission",
      -            "type": "string"
      -          },
      -          "occurrence": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "selection": {
      -            "oneOf": [
      -              {
      -                "properties": {
      -                  "fallback": {
      -                    "type": "boolean"
      -                  },
      -                  "kind": {
      -                    "const": "punishment",
      -                    "type": "string"
      -                  },
      -                  "qualified": {
      -                    "type": "boolean"
      -                  },
      -                  "unavailable": {
      -                    "const": true,
      -                    "type": "boolean"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "playerId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "rosterSeq": {
      -                          "exclusiveMinimum": 0,
      -                          "maximum": 9007199254740991,
      -                          "type": "integer"
      -                        },
      -                        "unitKey": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "playerId",
      -                        "unitKey",
      -                        "rosterSeq"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "units",
      -                  "fallback",
      -                  "qualified"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "guards": {
      -                    "items": {
      -                      "properties": {
      -                        "objective": {
      -                          "properties": {
      -                            "key": {
      -                              "maxLength": 128,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "name": {
      -                              "maxLength": 80,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "key",
      -                            "name"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "unit": {
      -                          "properties": {
      -                            "playerId": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            },
      -                            "rosterSeq": {
      -                              "exclusiveMinimum": 0,
      -                              "maximum": 9007199254740991,
      -                              "type": "integer"
      -                            },
      -                            "unitKey": {
      -                              "maxLength": 64,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "playerId",
      -                            "unitKey",
      -                            "rosterSeq"
      -                          ],
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "objective",
      -                        "unit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "kind": {
      -                    "const": "guards",
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "guards"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "kind": {
      -                    "const": "tempting-target",
      -                    "type": "string"
      -                  },
      -                  "noMansLand": {
      -                    "type": "boolean"
      -                  },
      -                  "notHome": {
      -                    "type": "boolean"
      -                  },
      -                  "objective": {
      -                    "properties": {
      -                      "key": {
      -                        "maxLength": 128,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "key",
      -                      "name"
      -                    ],
      -                    "type": "object"
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "objective",
      -                  "notHome",
      -                  "noMansLand"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "properties": {
      -                  "kind": {
      -                    "const": "beacon",
      -                    "type": "string"
      -                  },
      -                  "note": {
      -                    "maxLength": 200,
      -                    "type": "string"
      -                  },
      -                  "unit": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "playerId": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "rosterSeq": {
      -                            "exclusiveMinimum": 0,
      -                            "maximum": 9007199254740991,
      -                            "type": "integer"
      -                          },
      -                          "unitKey": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "playerId",
      -                          "unitKey",
      -                          "rosterSeq"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  }
      -                },
      -                "required": [
      -                  "kind",
      -                  "unit",
      -                  "note"
      -                ],
      -                "type": "object"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "cardKey",
      -          "occurrence",
      -          "selection"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "clockLimitMinutes": {
      -            "anyOf": [
      -              {
      -                "maximum": 300,
      -                "minimum": 5,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "kind": {
      -            "const": "configure-battle",
      -            "type": "string"
      -          },
      -          "limit": {
      -            "anyOf": [
      -              {
      -                "maximum": 10000,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "missionPackId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "playerCount": {
      -            "anyOf": [
      -              {
      -                "const": 2,
      -                "type": "number"
      -              },
      -              {
      -                "const": 3,
      -                "type": "number"
      -              },
      -              {
      -                "const": 4,
      -                "type": "number"
      -              }
      -            ]
      -          },
      -          "teamBattle": {
      -            "type": "boolean"
      -          },
      -          "terrainLayoutId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "twistId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "limit",
      -          "missionPackId",
      -          "terrainLayoutId",
      -          "twistId",
      -          "clockLimitMinutes"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reset-setup",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "detach-roster",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "eventToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "lock-league-rosters",
      -            "type": "string"
      -          },
      -          "leagueToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "leagueToken"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-setup-step",
      -            "type": "string"
      -          },
      -          "step": {
      -            "maximum": 9,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "step"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-attacker",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "attackerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-first-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "disposition": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-side-disposition",
      -            "type": "string"
      -          },
      -          "side": {
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "side",
      -          "disposition"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "attach-roster",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "prep": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "primary": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "awards": {
      -                            "items": {
      -                              "properties": {
      -                                "criteria": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 2000,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "cumulative": {
      -                                  "type": "boolean"
      -                                },
      -                                "group": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 100,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "max": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maximum": 100,
      -                                      "minimum": 0,
      -                                      "type": "integer"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "mode": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 40,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "per": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 200,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "trigger": {
      -                                  "properties": {
      -                                    "phase": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "playerTurn": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMax": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMin": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "timing": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    }
      -                                  },
      -                                  "required": [
      -                                    "timing",
      -                                    "phase",
      -                                    "playerTurn",
      -                                    "roundMin",
      -                                    "roundMax"
      -                                  ],
      -                                  "type": "object"
      -                                },
      -                                "vp": {
      -                                  "maximum": 100,
      -                                  "minimum": 0,
      -                                  "type": "integer"
      -                                }
      -                              },
      -                              "required": [
      -                                "vp",
      -                                "per",
      -                                "mode",
      -                                "max",
      -                                "group",
      -                                "cumulative",
      -                                "criteria",
      -                                "trigger"
      -                              ],
      -                              "type": "object"
      -                            },
      -                            "maxItems": 20,
      -                            "type": "array"
      -                          },
      -                          "key": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "name": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "selection": {
      -                            "enum": [
      -                              "punishment",
      -                              "guards",
      -                              "tempting-target",
      -                              "beacon"
      -                            ],
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "key",
      -                          "name"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "secondaries": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "selection": {
      -                          "enum": [
      -                            "punishment",
      -                            "guards",
      -                            "tempting-target",
      -                            "beacon"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 6,
      -                    "type": "array"
      -                  },
      -                  "secondaryDeck": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "selection": {
      -                          "enum": [
      -                            "punishment",
      -                            "guards",
      -                            "tempting-target",
      -                            "beacon"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 60,
      -                    "type": "array"
      -                  },
      -                  "secondaryMode": {
      -                    "enum": [
      -                      "fixed",
      -                      "tactical"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "stratagems": {
      -                    "items": {
      -                      "properties": {
      -                        "cp": {
      -                          "maximum": 6,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "detachment": {
      -                          "maxLength": 249,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "limit": {
      -                          "enum": [
      -                            "phase",
      -                            "turn",
      -                            "battle-round",
      -                            "battle",
      -                            "unlimited"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "phases": {
      -                          "items": {
      -                            "enum": [
      -                              "command",
      -                              "movement",
      -                              "shooting",
      -                              "charge",
      -                              "fight",
      -                              "end"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 6,
      -                          "type": "array"
      -                        },
      -                        "turn": {
      -                          "enum": [
      -                            "your-turn",
      -                            "opponent-turn",
      -                            "either"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "cp",
      -                        "limit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 48,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "stratagems",
      -                  "secondaries",
      -                  "primary",
      -                  "secondaryMode"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "roster": {
      -            "properties": {
      -              "built": {
      -                "properties": {
      -                  "catalogueId": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "detachment": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 80,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachmentIds": {
      -                    "items": {
      -                      "maxLength": 128,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "detachmentPointBudget": {
      -                    "anyOf": [
      -                      {
      -                        "maximum": 3,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachments": {
      -                    "items": {
      -                      "properties": {
      -                        "name": {
      -                          "maxLength": 80,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 3,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "name",
      -                        "points"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "disposition": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 64,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "edition": {
      -                    "properties": {
      -                      "description": {
      -                        "maxLength": 240,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "id": {
      -                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "slug": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      -                        "type": "string"
      -                      },
      -                      "status": {
      -                        "enum": [
      -                          "preview",
      -                          "released",
      -                          "retired"
      -                        ],
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "id",
      -                      "name",
      -                      "status"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "limit": {
      -                    "maximum": 10000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "picks": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "catalogueId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "choices": {
      -                          "additionalProperties": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 60,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        },
      -                        "spreads": {
      -                          "additionalProperties": {
      -                            "additionalProperties": {
      -                              "maximum": 60,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            "propertyNames": {
      -                              "maxLength": 64,
      -                              "type": "string"
      -                            },
      -                            "type": "object"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "toggles": {
      -                          "additionalProperties": {
      -                            "maximum": 1,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "entryId"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 100,
      -                    "type": "array"
      -                  },
      -                  "revision": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "strategicReserveLimit": {
      -                    "maximum": 5000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "enhancements": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "formationOptions": {
      -                          "items": {
      -                            "enum": [
      -                              "battlefield",
      -                              "strategic-reserves",
      -                              "deep-strike",
      -                              "embarked"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 4,
      -                          "type": "array"
      -                        },
      -                        "group": {
      -                          "enum": [
      -                            "epic-hero",
      -                            "character",
      -                            "battleline",
      -                            "infantry",
      -                            "swarm",
      -                            "mounted",
      -                            "beast",
      -                            "monster",
      -                            "vehicle",
      -                            "drone",
      -                            "transport",
      -                            "fortification",
      -                            "other"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "joined": {
      -                          "items": {
      -                            "properties": {
      -                              "label": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "label",
      -                              "name"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "maximum": 10000,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "prebattleRules": {
      -                          "items": {
      -                            "enum": [
      -                              "infiltrators",
      -                              "scouts"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 2,
      -                          "type": "array"
      -                        },
      -                        "strategicReserveExempt": {
      -                          "type": "boolean"
      -                        },
      -                        "transport": {
      -                          "type": "boolean"
      -                        },
      -                        "transportRule": {
      -                          "maxLength": 4000,
      -                          "type": "string"
      -                        },
      -                        "upgrades": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "wargear": {
      -                          "items": {
      -                            "properties": {
      -                              "count": {
      -                                "maximum": 100,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "name",
      -                              "count"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 200,
      -                          "type": "array"
      -                        },
      -                        "warlord": {
      -                          "type": "boolean"
      -                        },
      -                        "warlordEligible": {
      -                          "type": "boolean"
      -                        },
      -                        "wounds": {
      -                          "maximum": 100,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "points",
      -                        "models"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 200,
      -                    "type": "array"
      -                  },
      -                  "waivedRules": {
      -                    "items": {
      -                      "enum": [
      -                        "points-limit",
      -                        "detachments",
      -                        "detachment-points",
      -                        "kotc-infantry",
      -                        "kotc-warlord",
      -                        "kotc-epic-heroes",
      -                        "kotc-toughness",
      -                        "kotc-datasheet-copies"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "maxItems": 8,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "catalogueId",
      -                  "revision",
      -                  "limit",
      -                  "detachment",
      -                  "disposition",
      -                  "units"
      -                ],
      -                "type": "object"
      -              },
      -              "id": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "type": "string"
      -              },
      -              "reminders": {
      -                "items": {
      -                  "properties": {
      -                    "ability": {
      -                      "maxLength": 80,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "description": {
      -                      "maxLength": 10000,
      -                      "type": "string"
      -                    },
      -                    "key": {
      -                      "maxLength": 240,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "timings": {
      -                      "items": {
      -                        "oneOf": [
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "phase-start",
      -                                  "phase-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "enum": [
      -                                  "command",
      -                                  "movement",
      -                                  "shooting",
      -                                  "charge",
      -                                  "fight",
      -                                  "any"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "turn-start",
      -                                  "turn-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "round-start",
      -                                  "round-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "const": "either",
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          }
      -                        ]
      -                      },
      -                      "maxItems": 10,
      -                      "minItems": 1,
      -                      "type": "array"
      -                    },
      -                    "unit": {
      -                      "properties": {
      -                        "index": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "index",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "whileDestroyed": {
      -                      "type": "boolean"
      -                    }
      -                  },
      -                  "required": [
      -                    "key",
      -                    "ability",
      -                    "description",
      -                    "timings"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 100,
      -                "type": "array"
      -              },
      -              "remindersEnabled": {
      -                "type": "boolean"
      -              },
      -              "text": {
      -                "maxLength": 20000,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "name",
      -              "text"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "roster"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "destroyed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "set-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "destroyed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-prep",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "primary": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "awards": {
      -                    "items": {
      -                      "properties": {
      -                        "criteria": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 2000,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "cumulative": {
      -                          "type": "boolean"
      -                        },
      -                        "group": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 100,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "max": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 100,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "mode": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 40,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "per": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 200,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "trigger": {
      -                          "properties": {
      -                            "phase": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "playerTurn": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMax": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMin": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "timing": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            }
      -                          },
      -                          "required": [
      -                            "timing",
      -                            "phase",
      -                            "playerTurn",
      -                            "roundMin",
      -                            "roundMax"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "vp": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "vp",
      -                        "per",
      -                        "mode",
      -                        "max",
      -                        "group",
      -                        "cumulative",
      -                        "criteria",
      -                        "trigger"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "key": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "name": {
      -                    "maxLength": 80,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "selection": {
      -                    "enum": [
      -                      "punishment",
      -                      "guards",
      -                      "tempting-target",
      -                      "beacon"
      -                    ],
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "key",
      -                  "name"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 6,
      -            "type": "array"
      -          },
      -          "secondaryDeck": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 60,
      -            "type": "array"
      -          },
      -          "secondaryMode": {
      -            "enum": [
      -              "fixed",
      -              "tactical"
      -            ],
      -            "type": "string"
      -          },
      -          "stratagems": {
      -            "items": {
      -              "properties": {
      -                "cp": {
      -                  "maximum": 6,
      -                  "minimum": 0,
      -                  "type": "integer"
      -                },
      -                "detachment": {
      -                  "maxLength": 249,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "limit": {
      -                  "enum": [
      -                    "phase",
      -                    "turn",
      -                    "battle-round",
      -                    "battle",
      -                    "unlimited"
      -                  ],
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "phases": {
      -                  "items": {
      -                    "enum": [
      -                      "command",
      -                      "movement",
      -                      "shooting",
      -                      "charge",
      -                      "fight",
      -                      "end"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "maxItems": 6,
      -                  "type": "array"
      -                },
      -                "turn": {
      -                  "enum": [
      -                    "your-turn",
      -                    "opponent-turn",
      -                    "either"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name",
      -                "cp",
      -                "limit"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 48,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagems",
      -          "secondaries",
      -          "primary",
      -          "secondaryMode"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "deployed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "deploy-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "deployed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "formation": {
      -            "enum": [
      -              "battlefield",
      -              "strategic-reserves",
      -              "deep-strike",
      -              "embarked"
      -            ],
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-unit-formation",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "transportKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "formation"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-painted",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "painted"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "wound-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "damage-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-deployment",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-battlefield",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "terrainLayoutId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId",
      -          "terrainLayoutId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "use-stratagem",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "use-new-orders",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          },
      -          "secondaryKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "stratagemKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagemKey",
      -          "secondaryKey",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "score-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "score-settlement",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "round": {
      -            "maximum": 5,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "scores": {
      -            "items": {
      -              "oneOf": [
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "primary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "final": {
      -                      "properties": {
      -                        "claims": {
      -                          "items": {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "delta": {
      -                          "exclusiveMinimum": 0,
      -                          "maximum": 9007199254740991,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "claims",
      -                        "delta"
      -                      ],
      -                      "type": "object"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "secondary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "key": {
      -                      "maxLength": 64,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "status": {
      -                      "const": "achieved",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "key",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                }
      -              ]
      -            },
      -            "maxItems": 31,
      -            "minItems": 1,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "scores"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-secondary-status",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "status": {
      -            "enum": [
      -              "active",
      -              "achieved",
      -              "discarded",
      -              "returned"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "status"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondaries",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "selection": {
      -                  "enum": [
      -                    "punishment",
      -                    "guards",
      -                    "tempting-target",
      -                    "beacon"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 2,
      -            "minItems": 1,
      -            "type": "array"
      -          },
      -          "selected": {
      -            "const": true,
      -            "type": "boolean"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondaries"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-draw",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-scoring",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "select-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "selection": {
      -                "enum": [
      -                  "punishment",
      -                  "guards",
      -                  "tempting-target",
      -                  "beacon"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reveal-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "begin-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "adjust-cp",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "gainCp": {
      -            "type": "boolean"
      -          },
      -          "keys": {
      -            "items": {
      -              "maxLength": 64,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "kind": {
      -            "const": "resolve-tactical-hand",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "category": {
      -            "enum": [
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          },
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "score",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "category",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "correct-player",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "resource": {
      -            "enum": [
      -              "cp",
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "playerId",
      -          "resource",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "settle-opponent-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "request-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "cancel-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "pause-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "resume-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "concededBy": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "end-battle",
      -            "type": "string"
      -          },
      -          "reason": {
      -            "enum": [
      -              "completed",
      -              "finished-early",
      -              "conceded"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reopen-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "undo",
      -            "type": "string"
      -          },
      -          "target": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "target"
      -        ],
      -        "type": "object"
      -      }
      -    ]
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "attach-saved-roster",
      -        "type": "string"
      -      },
      -      "playerId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "rosterId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "rosterId"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "oneOf": [
      +      {
      +        "properties": {
      +          "cardKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "select-mission",
      +            "type": "string"
      +          },
      +          "occurrence": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "selection": {
      +            "oneOf": [
      +              {
      +                "properties": {
      +                  "fallback": {
      +                    "type": "boolean"
      +                  },
      +                  "kind": {
      +                    "const": "punishment",
      +                    "type": "string"
      +                  },
      +                  "qualified": {
      +                    "type": "boolean"
      +                  },
      +                  "unavailable": {
      +                    "const": true,
      +                    "type": "boolean"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "playerId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "rosterSeq": {
      +                          "exclusiveMinimum": 0,
      +                          "maximum": 9007199254740991,
      +                          "type": "integer"
      +                        },
      +                        "unitKey": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "playerId",
      +                        "unitKey",
      +                        "rosterSeq"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "units",
      +                  "fallback",
      +                  "qualified"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "guards": {
      +                    "items": {
      +                      "properties": {
      +                        "objective": {
      +                          "properties": {
      +                            "key": {
      +                              "maxLength": 128,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "name": {
      +                              "maxLength": 80,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "key",
      +                            "name"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "unit": {
      +                          "properties": {
      +                            "playerId": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "rosterSeq": {
      +                              "exclusiveMinimum": 0,
      +                              "maximum": 9007199254740991,
      +                              "type": "integer"
      +                            },
      +                            "unitKey": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "playerId",
      +                            "unitKey",
      +                            "rosterSeq"
      +                          ],
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "objective",
      +                        "unit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "guards",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "guards"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "kind": {
      +                    "const": "tempting-target",
      +                    "type": "string"
      +                  },
      +                  "noMansLand": {
      +                    "type": "boolean"
      +                  },
      +                  "notHome": {
      +                    "type": "boolean"
      +                  },
      +                  "objective": {
      +                    "properties": {
      +                      "key": {
      +                        "maxLength": 128,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "key",
      +                      "name"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "objective",
      +                  "notHome",
      +                  "noMansLand"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "kind": {
      +                    "const": "beacon",
      +                    "type": "string"
      +                  },
      +                  "note": {
      +                    "maxLength": 200,
      +                    "type": "string"
      +                  },
      +                  "unit": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "playerId": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "rosterSeq": {
      +                            "exclusiveMinimum": 0,
      +                            "maximum": 9007199254740991,
      +                            "type": "integer"
      +                          },
      +                          "unitKey": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "playerId",
      +                          "unitKey",
      +                          "rosterSeq"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "unit",
      +                  "note"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "allEligible": {
      +                    "type": "boolean"
      +                  },
      +                  "areas": {
      +                    "items": {
      +                      "properties": {
      +                        "key": {
      +                          "maxLength": 128,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 5,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "locate-and-deny",
      +                    "type": "string"
      +                  },
      +                  "outsideZone": {
      +                    "type": "boolean"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "areas",
      +                  "outsideZone",
      +                  "allEligible"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "controlled": {
      +                    "type": "boolean"
      +                  },
      +                  "kind": {
      +                    "const": "sensor-sweep",
      +                    "type": "string"
      +                  },
      +                  "marker": {
      +                    "properties": {
      +                      "key": {
      +                        "maxLength": 128,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "playerId": {
      +                        "maxLength": 64,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "key",
      +                      "name",
      +                      "playerId"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "marker",
      +                  "controlled"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "consecrations": {
      +                    "items": {
      +                      "properties": {
      +                        "objective": {
      +                          "properties": {
      +                            "key": {
      +                              "maxLength": 128,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "name": {
      +                              "maxLength": 80,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "key",
      +                            "name"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "unit": {
      +                          "properties": {
      +                            "playerId": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "rosterSeq": {
      +                              "exclusiveMinimum": 0,
      +                              "maximum": 9007199254740991,
      +                              "type": "integer"
      +                            },
      +                            "unitKey": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "playerId",
      +                            "unitKey",
      +                            "rosterSeq"
      +                          ],
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "objective",
      +                        "unit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "consecrate",
      +                    "type": "string"
      +                  },
      +                  "notHome": {
      +                    "type": "boolean"
      +                  },
      +                  "qualified": {
      +                    "type": "boolean"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "consecrations",
      +                  "qualified",
      +                  "notHome"
      +                ],
      +                "type": "object"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "cardKey",
      +          "occurrence",
      +          "selection"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "clockLimitMinutes": {
      +            "anyOf": [
      +              {
      +                "maximum": 300,
      +                "minimum": 5,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "kind": {
      +            "const": "configure-battle",
      +            "type": "string"
      +          },
      +          "limit": {
      +            "anyOf": [
      +              {
      +                "maximum": 10000,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "missionPackId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "playerCount": {
      +            "anyOf": [
      +              {
      +                "const": 2,
      +                "type": "number"
      +              },
      +              {
      +                "const": 3,
      +                "type": "number"
      +              },
      +              {
      +                "const": 4,
      +                "type": "number"
      +              }
      +            ]
      +          },
      +          "teamBattle": {
      +            "type": "boolean"
      +          },
      +          "terrainLayoutId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "twistId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "limit",
      +          "missionPackId",
      +          "terrainLayoutId",
      +          "twistId",
      +          "clockLimitMinutes"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reset-setup",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "detach-roster",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "eventToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "lock-league-rosters",
      +            "type": "string"
      +          },
      +          "leagueToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "leagueToken"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-setup-step",
      +            "type": "string"
      +          },
      +          "step": {
      +            "maximum": 9,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "step"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-attacker",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "attackerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-first-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "disposition": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-side-disposition",
      +            "type": "string"
      +          },
      +          "side": {
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "side",
      +          "disposition"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "attach-roster",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "prep": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "primary": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "awards": {
      +                            "items": {
      +                              "properties": {
      +                                "criteria": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 2000,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "cumulative": {
      +                                  "type": "boolean"
      +                                },
      +                                "group": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 100,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "max": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maximum": 100,
      +                                      "minimum": 0,
      +                                      "type": "integer"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "mode": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 40,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "per": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 200,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "trigger": {
      +                                  "properties": {
      +                                    "phase": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "playerTurn": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMax": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMin": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "timing": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    }
      +                                  },
      +                                  "required": [
      +                                    "timing",
      +                                    "phase",
      +                                    "playerTurn",
      +                                    "roundMin",
      +                                    "roundMax"
      +                                  ],
      +                                  "type": "object"
      +                                },
      +                                "vp": {
      +                                  "maximum": 100,
      +                                  "minimum": 0,
      +                                  "type": "integer"
      +                                }
      +                              },
      +                              "required": [
      +                                "vp",
      +                                "per",
      +                                "mode",
      +                                "max",
      +                                "group",
      +                                "cumulative",
      +                                "criteria",
      +                                "trigger"
      +                              ],
      +                              "type": "object"
      +                            },
      +                            "maxItems": 20,
      +                            "type": "array"
      +                          },
      +                          "key": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "name": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "selection": {
      +                            "enum": [
      +                              "punishment",
      +                              "guards",
      +                              "tempting-target",
      +                              "beacon",
      +                              "locate-and-deny",
      +                              "sensor-sweep",
      +                              "consecrate"
      +                            ],
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "key",
      +                          "name"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "secondaries": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "selection": {
      +                          "enum": [
      +                            "punishment",
      +                            "guards",
      +                            "tempting-target",
      +                            "beacon",
      +                            "locate-and-deny",
      +                            "sensor-sweep",
      +                            "consecrate"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 6,
      +                    "type": "array"
      +                  },
      +                  "secondaryDeck": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "selection": {
      +                          "enum": [
      +                            "punishment",
      +                            "guards",
      +                            "tempting-target",
      +                            "beacon",
      +                            "locate-and-deny",
      +                            "sensor-sweep",
      +                            "consecrate"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 60,
      +                    "type": "array"
      +                  },
      +                  "secondaryMode": {
      +                    "enum": [
      +                      "fixed",
      +                      "tactical"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "stratagems": {
      +                    "items": {
      +                      "properties": {
      +                        "cp": {
      +                          "maximum": 6,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "detachment": {
      +                          "maxLength": 249,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "limit": {
      +                          "enum": [
      +                            "phase",
      +                            "turn",
      +                            "battle-round",
      +                            "battle",
      +                            "unlimited"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "phases": {
      +                          "items": {
      +                            "enum": [
      +                              "command",
      +                              "movement",
      +                              "shooting",
      +                              "charge",
      +                              "fight",
      +                              "end"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 6,
      +                          "type": "array"
      +                        },
      +                        "turn": {
      +                          "enum": [
      +                            "your-turn",
      +                            "opponent-turn",
      +                            "either"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "cp",
      +                        "limit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 48,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "stratagems",
      +                  "secondaries",
      +                  "primary",
      +                  "secondaryMode"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "roster": {
      +            "properties": {
      +              "built": {
      +                "properties": {
      +                  "catalogueId": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "detachment": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 80,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachmentIds": {
      +                    "items": {
      +                      "maxLength": 128,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "detachmentPointBudget": {
      +                    "anyOf": [
      +                      {
      +                        "maximum": 3,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachments": {
      +                    "items": {
      +                      "properties": {
      +                        "name": {
      +                          "maxLength": 80,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 3,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "name",
      +                        "points"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "disposition": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 64,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "edition": {
      +                    "properties": {
      +                      "description": {
      +                        "maxLength": 240,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "id": {
      +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "slug": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      +                        "type": "string"
      +                      },
      +                      "status": {
      +                        "enum": [
      +                          "preview",
      +                          "released",
      +                          "retired"
      +                        ],
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "id",
      +                      "name",
      +                      "status"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "limit": {
      +                    "maximum": 10000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "picks": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "catalogueId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "choices": {
      +                          "additionalProperties": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 60,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        },
      +                        "spreads": {
      +                          "additionalProperties": {
      +                            "additionalProperties": {
      +                              "maximum": 60,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            "propertyNames": {
      +                              "maxLength": 64,
      +                              "type": "string"
      +                            },
      +                            "type": "object"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "toggles": {
      +                          "additionalProperties": {
      +                            "maximum": 1,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "entryId"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 100,
      +                    "type": "array"
      +                  },
      +                  "revision": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "strategicReserveLimit": {
      +                    "maximum": 5000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "enhancements": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "formationOptions": {
      +                          "items": {
      +                            "enum": [
      +                              "battlefield",
      +                              "strategic-reserves",
      +                              "deep-strike",
      +                              "embarked"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 4,
      +                          "type": "array"
      +                        },
      +                        "group": {
      +                          "enum": [
      +                            "epic-hero",
      +                            "character",
      +                            "battleline",
      +                            "infantry",
      +                            "swarm",
      +                            "mounted",
      +                            "beast",
      +                            "monster",
      +                            "vehicle",
      +                            "drone",
      +                            "transport",
      +                            "fortification",
      +                            "other"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "joined": {
      +                          "items": {
      +                            "properties": {
      +                              "label": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "label",
      +                              "name"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "maximum": 10000,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "prebattleRules": {
      +                          "items": {
      +                            "enum": [
      +                              "infiltrators",
      +                              "scouts"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 2,
      +                          "type": "array"
      +                        },
      +                        "strategicReserveExempt": {
      +                          "type": "boolean"
      +                        },
      +                        "transport": {
      +                          "type": "boolean"
      +                        },
      +                        "transportRule": {
      +                          "maxLength": 4000,
      +                          "type": "string"
      +                        },
      +                        "upgrades": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "wargear": {
      +                          "items": {
      +                            "properties": {
      +                              "count": {
      +                                "maximum": 100,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "name",
      +                              "count"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 200,
      +                          "type": "array"
      +                        },
      +                        "warlord": {
      +                          "type": "boolean"
      +                        },
      +                        "warlordEligible": {
      +                          "type": "boolean"
      +                        },
      +                        "wounds": {
      +                          "maximum": 100,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "points",
      +                        "models"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 200,
      +                    "type": "array"
      +                  },
      +                  "waivedRules": {
      +                    "items": {
      +                      "enum": [
      +                        "points-limit",
      +                        "detachments",
      +                        "detachment-points",
      +                        "kotc-infantry",
      +                        "kotc-warlord",
      +                        "kotc-epic-heroes",
      +                        "kotc-toughness",
      +                        "kotc-datasheet-copies"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "maxItems": 8,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "catalogueId",
      +                  "revision",
      +                  "limit",
      +                  "detachment",
      +                  "disposition",
      +                  "units"
      +                ],
      +                "type": "object"
      +              },
      +              "id": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "type": "string"
      +              },
      +              "reminders": {
      +                "items": {
      +                  "properties": {
      +                    "ability": {
      +                      "maxLength": 80,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "description": {
      +                      "maxLength": 10000,
      +                      "type": "string"
      +                    },
      +                    "key": {
      +                      "maxLength": 240,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "timings": {
      +                      "items": {
      +                        "oneOf": [
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "phase-start",
      +                                  "phase-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "enum": [
      +                                  "command",
      +                                  "movement",
      +                                  "shooting",
      +                                  "charge",
      +                                  "fight",
      +                                  "any"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "turn-start",
      +                                  "turn-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "round-start",
      +                                  "round-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "const": "either",
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          }
      +                        ]
      +                      },
      +                      "maxItems": 10,
      +                      "minItems": 1,
      +                      "type": "array"
      +                    },
      +                    "unit": {
      +                      "properties": {
      +                        "index": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "index",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "whileDestroyed": {
      +                      "type": "boolean"
      +                    }
      +                  },
      +                  "required": [
      +                    "key",
      +                    "ability",
      +                    "description",
      +                    "timings"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 100,
      +                "type": "array"
      +              },
      +              "remindersEnabled": {
      +                "type": "boolean"
      +              },
      +              "text": {
      +                "maxLength": 20000,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "text"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "roster"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "destroyed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "set-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "destroyed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-prep",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "primary": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "awards": {
      +                    "items": {
      +                      "properties": {
      +                        "criteria": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 2000,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "cumulative": {
      +                          "type": "boolean"
      +                        },
      +                        "group": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 100,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "max": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 100,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "mode": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 40,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "per": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 200,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "trigger": {
      +                          "properties": {
      +                            "phase": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "playerTurn": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMax": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMin": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "timing": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            }
      +                          },
      +                          "required": [
      +                            "timing",
      +                            "phase",
      +                            "playerTurn",
      +                            "roundMin",
      +                            "roundMax"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "vp": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "vp",
      +                        "per",
      +                        "mode",
      +                        "max",
      +                        "group",
      +                        "cumulative",
      +                        "criteria",
      +                        "trigger"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "key": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "maxLength": 80,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "selection": {
      +                    "enum": [
      +                      "punishment",
      +                      "guards",
      +                      "tempting-target",
      +                      "beacon",
      +                      "locate-and-deny",
      +                      "sensor-sweep",
      +                      "consecrate"
      +                    ],
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "key",
      +                  "name"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 6,
      +            "type": "array"
      +          },
      +          "secondaryDeck": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 60,
      +            "type": "array"
      +          },
      +          "secondaryMode": {
      +            "enum": [
      +              "fixed",
      +              "tactical"
      +            ],
      +            "type": "string"
      +          },
      +          "stratagems": {
      +            "items": {
      +              "properties": {
      +                "cp": {
      +                  "maximum": 6,
      +                  "minimum": 0,
      +                  "type": "integer"
      +                },
      +                "detachment": {
      +                  "maxLength": 249,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "limit": {
      +                  "enum": [
      +                    "phase",
      +                    "turn",
      +                    "battle-round",
      +                    "battle",
      +                    "unlimited"
      +                  ],
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "phases": {
      +                  "items": {
      +                    "enum": [
      +                      "command",
      +                      "movement",
      +                      "shooting",
      +                      "charge",
      +                      "fight",
      +                      "end"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "maxItems": 6,
      +                  "type": "array"
      +                },
      +                "turn": {
      +                  "enum": [
      +                    "your-turn",
      +                    "opponent-turn",
      +                    "either"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name",
      +                "cp",
      +                "limit"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 48,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagems",
      +          "secondaries",
      +          "primary",
      +          "secondaryMode"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "deployed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "deploy-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "deployed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "formation": {
      +            "enum": [
      +              "battlefield",
      +              "strategic-reserves",
      +              "deep-strike",
      +              "embarked"
      +            ],
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-unit-formation",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "transportKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "formation"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-painted",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "painted"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "wound-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "damage-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-deployment",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-battlefield",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "terrainLayoutId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId",
      +          "terrainLayoutId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "use-stratagem",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "use-new-orders",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          },
      +          "secondaryKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "stratagemKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagemKey",
      +          "secondaryKey",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "score-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "score-settlement",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "round": {
      +            "maximum": 5,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "scores": {
      +            "items": {
      +              "oneOf": [
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "primary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "final": {
      +                      "properties": {
      +                        "claims": {
      +                          "items": {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "delta": {
      +                          "exclusiveMinimum": 0,
      +                          "maximum": 9007199254740991,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "claims",
      +                        "delta"
      +                      ],
      +                      "type": "object"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "secondary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "key": {
      +                      "maxLength": 64,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "status": {
      +                      "const": "achieved",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "key",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                }
      +              ]
      +            },
      +            "maxItems": 31,
      +            "minItems": 1,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "scores"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-secondary-status",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "status": {
      +            "enum": [
      +              "active",
      +              "achieved",
      +              "discarded",
      +              "returned"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondaries",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon",
      +                    "locate-and-deny",
      +                    "sensor-sweep",
      +                    "consecrate"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 2,
      +            "minItems": 1,
      +            "type": "array"
      +          },
      +          "selected": {
      +            "const": true,
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondaries"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-draw",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-scoring",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "select-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon",
      +                  "locate-and-deny",
      +                  "sensor-sweep",
      +                  "consecrate"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reveal-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "begin-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "adjust-cp",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "gainCp": {
      +            "type": "boolean"
      +          },
      +          "keys": {
      +            "items": {
      +              "maxLength": 64,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "kind": {
      +            "const": "resolve-tactical-hand",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "category": {
      +            "enum": [
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          },
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "score",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "category",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "correct-player",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "resource": {
      +            "enum": [
      +              "cp",
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "playerId",
      +          "resource",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "settle-opponent-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "request-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "cancel-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "pause-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "resume-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "concededBy": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "end-battle",
      +            "type": "string"
      +          },
      +          "reason": {
      +            "enum": [
      +              "completed",
      +              "finished-early",
      +              "conceded"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reopen-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "undo",
      +            "type": "string"
      +          },
      +          "target": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "target"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "attach-saved-roster",
      +        "type": "string"
      +      },
      +      "playerId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "rosterId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "rosterId"
      +    ],
      +    "type": "object"
      +  }
      +]
  11. Changed1 schema field changed
    • changedInput schema / properties / command / anyOf
      Previous value: -[
      -  {
      -    "oneOf": [
      -      {
      -        "properties": {
      -          "clockLimitMinutes": {
      -            "anyOf": [
      -              {
      -                "maximum": 300,
      -                "minimum": 5,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "kind": {
      -            "const": "configure-battle",
      -            "type": "string"
      -          },
      -          "limit": {
      -            "anyOf": [
      -              {
      -                "maximum": 10000,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "missionPackId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "playerCount": {
      -            "anyOf": [
      -              {
      -                "const": 2,
      -                "type": "number"
      -              },
      -              {
      -                "const": 3,
      -                "type": "number"
      -              },
      -              {
      -                "const": 4,
      -                "type": "number"
      -              }
      -            ]
      -          },
      -          "teamBattle": {
      -            "type": "boolean"
      -          },
      -          "terrainLayoutId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "twistId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "limit",
      -          "missionPackId",
      -          "terrainLayoutId",
      -          "twistId",
      -          "clockLimitMinutes"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reset-setup",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "detach-roster",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "eventToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "lock-league-rosters",
      -            "type": "string"
      -          },
      -          "leagueToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "leagueToken"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-setup-step",
      -            "type": "string"
      -          },
      -          "step": {
      -            "maximum": 9,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "step"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-attacker",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "attackerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-first-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "disposition": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-side-disposition",
      -            "type": "string"
      -          },
      -          "side": {
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "side",
      -          "disposition"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "attach-roster",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "prep": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "primary": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "awards": {
      -                            "items": {
      -                              "properties": {
      -                                "criteria": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 2000,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "cumulative": {
      -                                  "type": "boolean"
      -                                },
      -                                "group": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 100,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "max": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maximum": 100,
      -                                      "minimum": 0,
      -                                      "type": "integer"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "mode": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 40,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "per": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 200,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "trigger": {
      -                                  "properties": {
      -                                    "phase": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "playerTurn": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMax": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMin": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "timing": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    }
      -                                  },
      -                                  "required": [
      -                                    "timing",
      -                                    "phase",
      -                                    "playerTurn",
      -                                    "roundMin",
      -                                    "roundMax"
      -                                  ],
      -                                  "type": "object"
      -                                },
      -                                "vp": {
      -                                  "maximum": 100,
      -                                  "minimum": 0,
      -                                  "type": "integer"
      -                                }
      -                              },
      -                              "required": [
      -                                "vp",
      -                                "per",
      -                                "mode",
      -                                "max",
      -                                "group",
      -                                "cumulative",
      -                                "criteria",
      -                                "trigger"
      -                              ],
      -                              "type": "object"
      -                            },
      -                            "maxItems": 20,
      -                            "type": "array"
      -                          },
      -                          "key": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "name": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "key",
      -                          "name"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "secondaries": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 6,
      -                    "type": "array"
      -                  },
      -                  "secondaryDeck": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 60,
      -                    "type": "array"
      -                  },
      -                  "secondaryMode": {
      -                    "enum": [
      -                      "fixed",
      -                      "tactical"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "stratagems": {
      -                    "items": {
      -                      "properties": {
      -                        "cp": {
      -                          "maximum": 6,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "detachment": {
      -                          "maxLength": 249,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "limit": {
      -                          "enum": [
      -                            "phase",
      -                            "turn",
      -                            "battle-round",
      -                            "battle",
      -                            "unlimited"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "phases": {
      -                          "items": {
      -                            "enum": [
      -                              "command",
      -                              "movement",
      -                              "shooting",
      -                              "charge",
      -                              "fight",
      -                              "end"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 6,
      -                          "type": "array"
      -                        },
      -                        "turn": {
      -                          "enum": [
      -                            "your-turn",
      -                            "opponent-turn",
      -                            "either"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "cp",
      -                        "limit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 48,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "stratagems",
      -                  "secondaries",
      -                  "primary",
      -                  "secondaryMode"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "roster": {
      -            "properties": {
      -              "built": {
      -                "properties": {
      -                  "catalogueId": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "detachment": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 80,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachmentIds": {
      -                    "items": {
      -                      "maxLength": 128,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "detachmentPointBudget": {
      -                    "anyOf": [
      -                      {
      -                        "maximum": 3,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachments": {
      -                    "items": {
      -                      "properties": {
      -                        "name": {
      -                          "maxLength": 80,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 3,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "name",
      -                        "points"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "disposition": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 64,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "edition": {
      -                    "properties": {
      -                      "description": {
      -                        "maxLength": 240,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "id": {
      -                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "slug": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      -                        "type": "string"
      -                      },
      -                      "status": {
      -                        "enum": [
      -                          "preview",
      -                          "released",
      -                          "retired"
      -                        ],
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "id",
      -                      "name",
      -                      "status"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "limit": {
      -                    "maximum": 10000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "picks": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "catalogueId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "choices": {
      -                          "additionalProperties": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 60,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        },
      -                        "spreads": {
      -                          "additionalProperties": {
      -                            "additionalProperties": {
      -                              "maximum": 60,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            "propertyNames": {
      -                              "maxLength": 64,
      -                              "type": "string"
      -                            },
      -                            "type": "object"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "toggles": {
      -                          "additionalProperties": {
      -                            "maximum": 1,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "entryId"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 100,
      -                    "type": "array"
      -                  },
      -                  "revision": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "strategicReserveLimit": {
      -                    "maximum": 5000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "enhancements": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "formationOptions": {
      -                          "items": {
      -                            "enum": [
      -                              "battlefield",
      -                              "strategic-reserves",
      -                              "deep-strike",
      -                              "embarked"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 4,
      -                          "type": "array"
      -                        },
      -                        "group": {
      -                          "enum": [
      -                            "epic-hero",
      -                            "character",
      -                            "battleline",
      -                            "infantry",
      -                            "swarm",
      -                            "mounted",
      -                            "beast",
      -                            "monster",
      -                            "vehicle",
      -                            "drone",
      -                            "transport",
      -                            "fortification",
      -                            "other"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "joined": {
      -                          "items": {
      -                            "properties": {
      -                              "label": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "label",
      -                              "name"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "maximum": 10000,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "prebattleRules": {
      -                          "items": {
      -                            "enum": [
      -                              "infiltrators",
      -                              "scouts"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 2,
      -                          "type": "array"
      -                        },
      -                        "strategicReserveExempt": {
      -                          "type": "boolean"
      -                        },
      -                        "transport": {
      -                          "type": "boolean"
      -                        },
      -                        "transportRule": {
      -                          "maxLength": 4000,
      -                          "type": "string"
      -                        },
      -                        "upgrades": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "wargear": {
      -                          "items": {
      -                            "properties": {
      -                              "count": {
      -                                "maximum": 100,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "name",
      -                              "count"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 200,
      -                          "type": "array"
      -                        },
      -                        "warlord": {
      -                          "type": "boolean"
      -                        },
      -                        "warlordEligible": {
      -                          "type": "boolean"
      -                        },
      -                        "wounds": {
      -                          "maximum": 100,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "points",
      -                        "models"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 200,
      -                    "type": "array"
      -                  },
      -                  "waivedRules": {
      -                    "items": {
      -                      "enum": [
      -                        "points-limit",
      -                        "detachments",
      -                        "detachment-points",
      -                        "kotc-infantry",
      -                        "kotc-warlord",
      -                        "kotc-epic-heroes",
      -                        "kotc-toughness",
      -                        "kotc-datasheet-copies"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "maxItems": 8,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "catalogueId",
      -                  "revision",
      -                  "limit",
      -                  "detachment",
      -                  "disposition",
      -                  "units"
      -                ],
      -                "type": "object"
      -              },
      -              "id": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "type": "string"
      -              },
      -              "reminders": {
      -                "items": {
      -                  "properties": {
      -                    "ability": {
      -                      "maxLength": 80,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "description": {
      -                      "maxLength": 10000,
      -                      "type": "string"
      -                    },
      -                    "key": {
      -                      "maxLength": 240,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "timings": {
      -                      "items": {
      -                        "oneOf": [
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "phase-start",
      -                                  "phase-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "enum": [
      -                                  "command",
      -                                  "movement",
      -                                  "shooting",
      -                                  "charge",
      -                                  "fight",
      -                                  "any"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "turn-start",
      -                                  "turn-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "round-start",
      -                                  "round-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "const": "either",
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          }
      -                        ]
      -                      },
      -                      "maxItems": 10,
      -                      "minItems": 1,
      -                      "type": "array"
      -                    },
      -                    "unit": {
      -                      "properties": {
      -                        "index": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "index",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "whileDestroyed": {
      -                      "type": "boolean"
      -                    }
      -                  },
      -                  "required": [
      -                    "key",
      -                    "ability",
      -                    "description",
      -                    "timings"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 100,
      -                "type": "array"
      -              },
      -              "remindersEnabled": {
      -                "type": "boolean"
      -              },
      -              "text": {
      -                "maxLength": 20000,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "name",
      -              "text"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "roster"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "destroyed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "set-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "destroyed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-prep",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "primary": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "awards": {
      -                    "items": {
      -                      "properties": {
      -                        "criteria": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 2000,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "cumulative": {
      -                          "type": "boolean"
      -                        },
      -                        "group": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 100,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "max": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 100,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "mode": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 40,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "per": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 200,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "trigger": {
      -                          "properties": {
      -                            "phase": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "playerTurn": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMax": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMin": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "timing": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            }
      -                          },
      -                          "required": [
      -                            "timing",
      -                            "phase",
      -                            "playerTurn",
      -                            "roundMin",
      -                            "roundMax"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "vp": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "vp",
      -                        "per",
      -                        "mode",
      -                        "max",
      -                        "group",
      -                        "cumulative",
      -                        "criteria",
      -                        "trigger"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "key": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "name": {
      -                    "maxLength": 80,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "key",
      -                  "name"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 6,
      -            "type": "array"
      -          },
      -          "secondaryDeck": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 60,
      -            "type": "array"
      -          },
      -          "secondaryMode": {
      -            "enum": [
      -              "fixed",
      -              "tactical"
      -            ],
      -            "type": "string"
      -          },
      -          "stratagems": {
      -            "items": {
      -              "properties": {
      -                "cp": {
      -                  "maximum": 6,
      -                  "minimum": 0,
      -                  "type": "integer"
      -                },
      -                "detachment": {
      -                  "maxLength": 249,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "limit": {
      -                  "enum": [
      -                    "phase",
      -                    "turn",
      -                    "battle-round",
      -                    "battle",
      -                    "unlimited"
      -                  ],
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "phases": {
      -                  "items": {
      -                    "enum": [
      -                      "command",
      -                      "movement",
      -                      "shooting",
      -                      "charge",
      -                      "fight",
      -                      "end"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "maxItems": 6,
      -                  "type": "array"
      -                },
      -                "turn": {
      -                  "enum": [
      -                    "your-turn",
      -                    "opponent-turn",
      -                    "either"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name",
      -                "cp",
      -                "limit"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 48,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagems",
      -          "secondaries",
      -          "primary",
      -          "secondaryMode"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "deployed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "deploy-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "deployed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "formation": {
      -            "enum": [
      -              "battlefield",
      -              "strategic-reserves",
      -              "deep-strike",
      -              "embarked"
      -            ],
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-unit-formation",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "transportKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "formation"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-painted",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "painted"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "wound-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "damage-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-deployment",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-battlefield",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "terrainLayoutId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId",
      -          "terrainLayoutId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "use-stratagem",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "use-new-orders",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          },
      -          "secondaryKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "stratagemKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagemKey",
      -          "secondaryKey",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "score-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "score-settlement",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "round": {
      -            "maximum": 5,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "scores": {
      -            "items": {
      -              "oneOf": [
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "primary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "final": {
      -                      "properties": {
      -                        "claims": {
      -                          "items": {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "delta": {
      -                          "exclusiveMinimum": 0,
      -                          "maximum": 9007199254740991,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "claims",
      -                        "delta"
      -                      ],
      -                      "type": "object"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "secondary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "key": {
      -                      "maxLength": 64,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "status": {
      -                      "const": "achieved",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "key",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                }
      -              ]
      -            },
      -            "maxItems": 31,
      -            "minItems": 1,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "scores"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-secondary-status",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "status": {
      -            "enum": [
      -              "active",
      -              "achieved",
      -              "discarded",
      -              "returned"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "status"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondaries",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 2,
      -            "minItems": 1,
      -            "type": "array"
      -          },
      -          "selected": {
      -            "const": true,
      -            "type": "boolean"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondaries"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-draw",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-scoring",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "select-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reveal-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "begin-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "adjust-cp",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "gainCp": {
      -            "type": "boolean"
      -          },
      -          "keys": {
      -            "items": {
      -              "maxLength": 64,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "kind": {
      -            "const": "resolve-tactical-hand",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "category": {
      -            "enum": [
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          },
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "score",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "category",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "correct-player",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "resource": {
      -            "enum": [
      -              "cp",
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "playerId",
      -          "resource",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "settle-opponent-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "request-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "cancel-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "pause-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "resume-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "concededBy": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "end-battle",
      -            "type": "string"
      -          },
      -          "reason": {
      -            "enum": [
      -              "completed",
      -              "finished-early",
      -              "conceded"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reopen-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "undo",
      -            "type": "string"
      -          },
      -          "target": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "target"
      -        ],
      -        "type": "object"
      -      }
      -    ]
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "attach-saved-roster",
      -        "type": "string"
      -      },
      -      "playerId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "rosterId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "rosterId"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "oneOf": [
      +      {
      +        "properties": {
      +          "cardKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "select-mission",
      +            "type": "string"
      +          },
      +          "occurrence": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "selection": {
      +            "oneOf": [
      +              {
      +                "properties": {
      +                  "fallback": {
      +                    "type": "boolean"
      +                  },
      +                  "kind": {
      +                    "const": "punishment",
      +                    "type": "string"
      +                  },
      +                  "qualified": {
      +                    "type": "boolean"
      +                  },
      +                  "unavailable": {
      +                    "const": true,
      +                    "type": "boolean"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "playerId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "rosterSeq": {
      +                          "exclusiveMinimum": 0,
      +                          "maximum": 9007199254740991,
      +                          "type": "integer"
      +                        },
      +                        "unitKey": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "playerId",
      +                        "unitKey",
      +                        "rosterSeq"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "units",
      +                  "fallback",
      +                  "qualified"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "guards": {
      +                    "items": {
      +                      "properties": {
      +                        "objective": {
      +                          "properties": {
      +                            "key": {
      +                              "maxLength": 128,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "name": {
      +                              "maxLength": 80,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "key",
      +                            "name"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "unit": {
      +                          "properties": {
      +                            "playerId": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            },
      +                            "rosterSeq": {
      +                              "exclusiveMinimum": 0,
      +                              "maximum": 9007199254740991,
      +                              "type": "integer"
      +                            },
      +                            "unitKey": {
      +                              "maxLength": 64,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "playerId",
      +                            "unitKey",
      +                            "rosterSeq"
      +                          ],
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "objective",
      +                        "unit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "kind": {
      +                    "const": "guards",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "guards"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "kind": {
      +                    "const": "tempting-target",
      +                    "type": "string"
      +                  },
      +                  "noMansLand": {
      +                    "type": "boolean"
      +                  },
      +                  "notHome": {
      +                    "type": "boolean"
      +                  },
      +                  "objective": {
      +                    "properties": {
      +                      "key": {
      +                        "maxLength": 128,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "key",
      +                      "name"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "objective",
      +                  "notHome",
      +                  "noMansLand"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "properties": {
      +                  "kind": {
      +                    "const": "beacon",
      +                    "type": "string"
      +                  },
      +                  "note": {
      +                    "maxLength": 200,
      +                    "type": "string"
      +                  },
      +                  "unit": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "playerId": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "rosterSeq": {
      +                            "exclusiveMinimum": 0,
      +                            "maximum": 9007199254740991,
      +                            "type": "integer"
      +                          },
      +                          "unitKey": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "playerId",
      +                          "unitKey",
      +                          "rosterSeq"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "kind",
      +                  "unit",
      +                  "note"
      +                ],
      +                "type": "object"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "cardKey",
      +          "occurrence",
      +          "selection"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "clockLimitMinutes": {
      +            "anyOf": [
      +              {
      +                "maximum": 300,
      +                "minimum": 5,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "kind": {
      +            "const": "configure-battle",
      +            "type": "string"
      +          },
      +          "limit": {
      +            "anyOf": [
      +              {
      +                "maximum": 10000,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "missionPackId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "playerCount": {
      +            "anyOf": [
      +              {
      +                "const": 2,
      +                "type": "number"
      +              },
      +              {
      +                "const": 3,
      +                "type": "number"
      +              },
      +              {
      +                "const": 4,
      +                "type": "number"
      +              }
      +            ]
      +          },
      +          "teamBattle": {
      +            "type": "boolean"
      +          },
      +          "terrainLayoutId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "twistId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "limit",
      +          "missionPackId",
      +          "terrainLayoutId",
      +          "twistId",
      +          "clockLimitMinutes"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reset-setup",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "detach-roster",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "eventToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "lock-league-rosters",
      +            "type": "string"
      +          },
      +          "leagueToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "leagueToken"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-setup-step",
      +            "type": "string"
      +          },
      +          "step": {
      +            "maximum": 9,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "step"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-attacker",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "attackerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-first-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "disposition": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-side-disposition",
      +            "type": "string"
      +          },
      +          "side": {
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "side",
      +          "disposition"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "attach-roster",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "prep": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "primary": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "awards": {
      +                            "items": {
      +                              "properties": {
      +                                "criteria": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 2000,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "cumulative": {
      +                                  "type": "boolean"
      +                                },
      +                                "group": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 100,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "max": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maximum": 100,
      +                                      "minimum": 0,
      +                                      "type": "integer"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "mode": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 40,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "per": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 200,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "trigger": {
      +                                  "properties": {
      +                                    "phase": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "playerTurn": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMax": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMin": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "timing": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    }
      +                                  },
      +                                  "required": [
      +                                    "timing",
      +                                    "phase",
      +                                    "playerTurn",
      +                                    "roundMin",
      +                                    "roundMax"
      +                                  ],
      +                                  "type": "object"
      +                                },
      +                                "vp": {
      +                                  "maximum": 100,
      +                                  "minimum": 0,
      +                                  "type": "integer"
      +                                }
      +                              },
      +                              "required": [
      +                                "vp",
      +                                "per",
      +                                "mode",
      +                                "max",
      +                                "group",
      +                                "cumulative",
      +                                "criteria",
      +                                "trigger"
      +                              ],
      +                              "type": "object"
      +                            },
      +                            "maxItems": 20,
      +                            "type": "array"
      +                          },
      +                          "key": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "name": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "selection": {
      +                            "enum": [
      +                              "punishment",
      +                              "guards",
      +                              "tempting-target",
      +                              "beacon"
      +                            ],
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "key",
      +                          "name"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "secondaries": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "selection": {
      +                          "enum": [
      +                            "punishment",
      +                            "guards",
      +                            "tempting-target",
      +                            "beacon"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 6,
      +                    "type": "array"
      +                  },
      +                  "secondaryDeck": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "selection": {
      +                          "enum": [
      +                            "punishment",
      +                            "guards",
      +                            "tempting-target",
      +                            "beacon"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 60,
      +                    "type": "array"
      +                  },
      +                  "secondaryMode": {
      +                    "enum": [
      +                      "fixed",
      +                      "tactical"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "stratagems": {
      +                    "items": {
      +                      "properties": {
      +                        "cp": {
      +                          "maximum": 6,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "detachment": {
      +                          "maxLength": 249,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "limit": {
      +                          "enum": [
      +                            "phase",
      +                            "turn",
      +                            "battle-round",
      +                            "battle",
      +                            "unlimited"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "phases": {
      +                          "items": {
      +                            "enum": [
      +                              "command",
      +                              "movement",
      +                              "shooting",
      +                              "charge",
      +                              "fight",
      +                              "end"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 6,
      +                          "type": "array"
      +                        },
      +                        "turn": {
      +                          "enum": [
      +                            "your-turn",
      +                            "opponent-turn",
      +                            "either"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "cp",
      +                        "limit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 48,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "stratagems",
      +                  "secondaries",
      +                  "primary",
      +                  "secondaryMode"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "roster": {
      +            "properties": {
      +              "built": {
      +                "properties": {
      +                  "catalogueId": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "detachment": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 80,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachmentIds": {
      +                    "items": {
      +                      "maxLength": 128,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "detachmentPointBudget": {
      +                    "anyOf": [
      +                      {
      +                        "maximum": 3,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachments": {
      +                    "items": {
      +                      "properties": {
      +                        "name": {
      +                          "maxLength": 80,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 3,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "name",
      +                        "points"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "disposition": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 64,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "edition": {
      +                    "properties": {
      +                      "description": {
      +                        "maxLength": 240,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "id": {
      +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "slug": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      +                        "type": "string"
      +                      },
      +                      "status": {
      +                        "enum": [
      +                          "preview",
      +                          "released",
      +                          "retired"
      +                        ],
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "id",
      +                      "name",
      +                      "status"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "limit": {
      +                    "maximum": 10000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "picks": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "catalogueId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "choices": {
      +                          "additionalProperties": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 60,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        },
      +                        "spreads": {
      +                          "additionalProperties": {
      +                            "additionalProperties": {
      +                              "maximum": 60,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            "propertyNames": {
      +                              "maxLength": 64,
      +                              "type": "string"
      +                            },
      +                            "type": "object"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "toggles": {
      +                          "additionalProperties": {
      +                            "maximum": 1,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "entryId"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 100,
      +                    "type": "array"
      +                  },
      +                  "revision": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "strategicReserveLimit": {
      +                    "maximum": 5000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "enhancements": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "formationOptions": {
      +                          "items": {
      +                            "enum": [
      +                              "battlefield",
      +                              "strategic-reserves",
      +                              "deep-strike",
      +                              "embarked"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 4,
      +                          "type": "array"
      +                        },
      +                        "group": {
      +                          "enum": [
      +                            "epic-hero",
      +                            "character",
      +                            "battleline",
      +                            "infantry",
      +                            "swarm",
      +                            "mounted",
      +                            "beast",
      +                            "monster",
      +                            "vehicle",
      +                            "drone",
      +                            "transport",
      +                            "fortification",
      +                            "other"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "joined": {
      +                          "items": {
      +                            "properties": {
      +                              "label": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "label",
      +                              "name"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "maximum": 10000,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "prebattleRules": {
      +                          "items": {
      +                            "enum": [
      +                              "infiltrators",
      +                              "scouts"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 2,
      +                          "type": "array"
      +                        },
      +                        "strategicReserveExempt": {
      +                          "type": "boolean"
      +                        },
      +                        "transport": {
      +                          "type": "boolean"
      +                        },
      +                        "transportRule": {
      +                          "maxLength": 4000,
      +                          "type": "string"
      +                        },
      +                        "upgrades": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "wargear": {
      +                          "items": {
      +                            "properties": {
      +                              "count": {
      +                                "maximum": 100,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "name",
      +                              "count"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 200,
      +                          "type": "array"
      +                        },
      +                        "warlord": {
      +                          "type": "boolean"
      +                        },
      +                        "warlordEligible": {
      +                          "type": "boolean"
      +                        },
      +                        "wounds": {
      +                          "maximum": 100,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "points",
      +                        "models"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 200,
      +                    "type": "array"
      +                  },
      +                  "waivedRules": {
      +                    "items": {
      +                      "enum": [
      +                        "points-limit",
      +                        "detachments",
      +                        "detachment-points",
      +                        "kotc-infantry",
      +                        "kotc-warlord",
      +                        "kotc-epic-heroes",
      +                        "kotc-toughness",
      +                        "kotc-datasheet-copies"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "maxItems": 8,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "catalogueId",
      +                  "revision",
      +                  "limit",
      +                  "detachment",
      +                  "disposition",
      +                  "units"
      +                ],
      +                "type": "object"
      +              },
      +              "id": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "type": "string"
      +              },
      +              "reminders": {
      +                "items": {
      +                  "properties": {
      +                    "ability": {
      +                      "maxLength": 80,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "description": {
      +                      "maxLength": 10000,
      +                      "type": "string"
      +                    },
      +                    "key": {
      +                      "maxLength": 240,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "timings": {
      +                      "items": {
      +                        "oneOf": [
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "phase-start",
      +                                  "phase-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "enum": [
      +                                  "command",
      +                                  "movement",
      +                                  "shooting",
      +                                  "charge",
      +                                  "fight",
      +                                  "any"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "turn-start",
      +                                  "turn-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "round-start",
      +                                  "round-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "const": "either",
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          }
      +                        ]
      +                      },
      +                      "maxItems": 10,
      +                      "minItems": 1,
      +                      "type": "array"
      +                    },
      +                    "unit": {
      +                      "properties": {
      +                        "index": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "index",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "whileDestroyed": {
      +                      "type": "boolean"
      +                    }
      +                  },
      +                  "required": [
      +                    "key",
      +                    "ability",
      +                    "description",
      +                    "timings"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 100,
      +                "type": "array"
      +              },
      +              "remindersEnabled": {
      +                "type": "boolean"
      +              },
      +              "text": {
      +                "maxLength": 20000,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "text"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "roster"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "destroyed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "set-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "destroyed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-prep",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "primary": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "awards": {
      +                    "items": {
      +                      "properties": {
      +                        "criteria": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 2000,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "cumulative": {
      +                          "type": "boolean"
      +                        },
      +                        "group": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 100,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "max": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 100,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "mode": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 40,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "per": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 200,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "trigger": {
      +                          "properties": {
      +                            "phase": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "playerTurn": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMax": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMin": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "timing": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            }
      +                          },
      +                          "required": [
      +                            "timing",
      +                            "phase",
      +                            "playerTurn",
      +                            "roundMin",
      +                            "roundMax"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "vp": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "vp",
      +                        "per",
      +                        "mode",
      +                        "max",
      +                        "group",
      +                        "cumulative",
      +                        "criteria",
      +                        "trigger"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "key": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "maxLength": 80,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "selection": {
      +                    "enum": [
      +                      "punishment",
      +                      "guards",
      +                      "tempting-target",
      +                      "beacon"
      +                    ],
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "key",
      +                  "name"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 6,
      +            "type": "array"
      +          },
      +          "secondaryDeck": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 60,
      +            "type": "array"
      +          },
      +          "secondaryMode": {
      +            "enum": [
      +              "fixed",
      +              "tactical"
      +            ],
      +            "type": "string"
      +          },
      +          "stratagems": {
      +            "items": {
      +              "properties": {
      +                "cp": {
      +                  "maximum": 6,
      +                  "minimum": 0,
      +                  "type": "integer"
      +                },
      +                "detachment": {
      +                  "maxLength": 249,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "limit": {
      +                  "enum": [
      +                    "phase",
      +                    "turn",
      +                    "battle-round",
      +                    "battle",
      +                    "unlimited"
      +                  ],
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "phases": {
      +                  "items": {
      +                    "enum": [
      +                      "command",
      +                      "movement",
      +                      "shooting",
      +                      "charge",
      +                      "fight",
      +                      "end"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "maxItems": 6,
      +                  "type": "array"
      +                },
      +                "turn": {
      +                  "enum": [
      +                    "your-turn",
      +                    "opponent-turn",
      +                    "either"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name",
      +                "cp",
      +                "limit"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 48,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagems",
      +          "secondaries",
      +          "primary",
      +          "secondaryMode"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "deployed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "deploy-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "deployed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "formation": {
      +            "enum": [
      +              "battlefield",
      +              "strategic-reserves",
      +              "deep-strike",
      +              "embarked"
      +            ],
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-unit-formation",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "transportKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "formation"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-painted",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "painted"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "wound-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "damage-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-deployment",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-battlefield",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "terrainLayoutId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId",
      +          "terrainLayoutId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "use-stratagem",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "use-new-orders",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          },
      +          "secondaryKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "stratagemKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagemKey",
      +          "secondaryKey",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "score-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "score-settlement",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "round": {
      +            "maximum": 5,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "scores": {
      +            "items": {
      +              "oneOf": [
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "primary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "final": {
      +                      "properties": {
      +                        "claims": {
      +                          "items": {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "delta": {
      +                          "exclusiveMinimum": 0,
      +                          "maximum": 9007199254740991,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "claims",
      +                        "delta"
      +                      ],
      +                      "type": "object"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "secondary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "key": {
      +                      "maxLength": 64,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "status": {
      +                      "const": "achieved",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "key",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                }
      +              ]
      +            },
      +            "maxItems": 31,
      +            "minItems": 1,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "scores"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-secondary-status",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "status": {
      +            "enum": [
      +              "active",
      +              "achieved",
      +              "discarded",
      +              "returned"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondaries",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "selection": {
      +                  "enum": [
      +                    "punishment",
      +                    "guards",
      +                    "tempting-target",
      +                    "beacon"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 2,
      +            "minItems": 1,
      +            "type": "array"
      +          },
      +          "selected": {
      +            "const": true,
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondaries"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-draw",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-scoring",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "select-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "selection": {
      +                "enum": [
      +                  "punishment",
      +                  "guards",
      +                  "tempting-target",
      +                  "beacon"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reveal-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "begin-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "adjust-cp",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "gainCp": {
      +            "type": "boolean"
      +          },
      +          "keys": {
      +            "items": {
      +              "maxLength": 64,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "kind": {
      +            "const": "resolve-tactical-hand",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "category": {
      +            "enum": [
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          },
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "score",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "category",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "correct-player",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "resource": {
      +            "enum": [
      +              "cp",
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "playerId",
      +          "resource",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "settle-opponent-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "request-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "cancel-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "pause-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "resume-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "concededBy": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "end-battle",
      +            "type": "string"
      +          },
      +          "reason": {
      +            "enum": [
      +              "completed",
      +              "finished-early",
      +              "conceded"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reopen-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "undo",
      +            "type": "string"
      +          },
      +          "target": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "target"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "attach-saved-roster",
      +        "type": "string"
      +      },
      +      "playerId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "rosterId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "rosterId"
      +    ],
      +    "type": "object"
      +  }
      +]
  12. Changed1 schema field changed
    • changedInput schema / properties / command / anyOf
      Previous value: -[
      -  {
      -    "oneOf": [
      -      {
      -        "properties": {
      -          "clockLimitMinutes": {
      -            "anyOf": [
      -              {
      -                "maximum": 300,
      -                "minimum": 5,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "kind": {
      -            "const": "configure-battle",
      -            "type": "string"
      -          },
      -          "limit": {
      -            "anyOf": [
      -              {
      -                "maximum": 10000,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "missionPackId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "playerCount": {
      -            "anyOf": [
      -              {
      -                "const": 2,
      -                "type": "number"
      -              },
      -              {
      -                "const": 3,
      -                "type": "number"
      -              },
      -              {
      -                "const": 4,
      -                "type": "number"
      -              }
      -            ]
      -          },
      -          "teamBattle": {
      -            "type": "boolean"
      -          },
      -          "terrainLayoutId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "twistId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "limit",
      -          "missionPackId",
      -          "terrainLayoutId",
      -          "twistId",
      -          "clockLimitMinutes"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reset-setup",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "detach-roster",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "eventToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "lock-league-rosters",
      -            "type": "string"
      -          },
      -          "leagueToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "leagueToken"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-setup-step",
      -            "type": "string"
      -          },
      -          "step": {
      -            "maximum": 9,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "step"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-attacker",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "attackerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-first-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "disposition": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-side-disposition",
      -            "type": "string"
      -          },
      -          "side": {
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "side",
      -          "disposition"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "attach-roster",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "prep": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "primary": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "awards": {
      -                            "items": {
      -                              "properties": {
      -                                "criteria": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 2000,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "cumulative": {
      -                                  "type": "boolean"
      -                                },
      -                                "group": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 100,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "max": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maximum": 100,
      -                                      "minimum": 0,
      -                                      "type": "integer"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "mode": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 40,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "per": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 200,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "trigger": {
      -                                  "properties": {
      -                                    "phase": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "playerTurn": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMax": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMin": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "timing": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    }
      -                                  },
      -                                  "required": [
      -                                    "timing",
      -                                    "phase",
      -                                    "playerTurn",
      -                                    "roundMin",
      -                                    "roundMax"
      -                                  ],
      -                                  "type": "object"
      -                                },
      -                                "vp": {
      -                                  "maximum": 100,
      -                                  "minimum": 0,
      -                                  "type": "integer"
      -                                }
      -                              },
      -                              "required": [
      -                                "vp",
      -                                "per",
      -                                "mode",
      -                                "max",
      -                                "group",
      -                                "cumulative",
      -                                "criteria",
      -                                "trigger"
      -                              ],
      -                              "type": "object"
      -                            },
      -                            "maxItems": 20,
      -                            "type": "array"
      -                          },
      -                          "key": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "name": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "key",
      -                          "name"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "secondaries": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 6,
      -                    "type": "array"
      -                  },
      -                  "secondaryDeck": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 60,
      -                    "type": "array"
      -                  },
      -                  "secondaryMode": {
      -                    "enum": [
      -                      "fixed",
      -                      "tactical"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "stratagems": {
      -                    "items": {
      -                      "properties": {
      -                        "cp": {
      -                          "maximum": 6,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "detachment": {
      -                          "maxLength": 249,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "limit": {
      -                          "enum": [
      -                            "phase",
      -                            "turn",
      -                            "battle-round",
      -                            "battle",
      -                            "unlimited"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "phases": {
      -                          "items": {
      -                            "enum": [
      -                              "command",
      -                              "movement",
      -                              "shooting",
      -                              "charge",
      -                              "fight",
      -                              "end"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 6,
      -                          "type": "array"
      -                        },
      -                        "turn": {
      -                          "enum": [
      -                            "your-turn",
      -                            "opponent-turn",
      -                            "either"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "cp",
      -                        "limit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 48,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "stratagems",
      -                  "secondaries",
      -                  "primary",
      -                  "secondaryMode"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "roster": {
      -            "properties": {
      -              "built": {
      -                "properties": {
      -                  "catalogueId": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "detachment": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 80,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachmentIds": {
      -                    "items": {
      -                      "maxLength": 128,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "detachmentPointBudget": {
      -                    "anyOf": [
      -                      {
      -                        "maximum": 3,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachments": {
      -                    "items": {
      -                      "properties": {
      -                        "name": {
      -                          "maxLength": 80,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 3,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "name",
      -                        "points"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "disposition": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 64,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "edition": {
      -                    "properties": {
      -                      "description": {
      -                        "maxLength": 240,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "id": {
      -                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "slug": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      -                        "type": "string"
      -                      },
      -                      "status": {
      -                        "enum": [
      -                          "preview",
      -                          "released",
      -                          "retired"
      -                        ],
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "id",
      -                      "name",
      -                      "status"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "limit": {
      -                    "maximum": 10000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "picks": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "catalogueId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "choices": {
      -                          "additionalProperties": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 60,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        },
      -                        "spreads": {
      -                          "additionalProperties": {
      -                            "additionalProperties": {
      -                              "maximum": 60,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            "propertyNames": {
      -                              "maxLength": 64,
      -                              "type": "string"
      -                            },
      -                            "type": "object"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "toggles": {
      -                          "additionalProperties": {
      -                            "maximum": 1,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "entryId"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 100,
      -                    "type": "array"
      -                  },
      -                  "revision": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "strategicReserveLimit": {
      -                    "maximum": 5000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "enhancements": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "formationOptions": {
      -                          "items": {
      -                            "enum": [
      -                              "battlefield",
      -                              "strategic-reserves",
      -                              "deep-strike",
      -                              "embarked"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 4,
      -                          "type": "array"
      -                        },
      -                        "group": {
      -                          "enum": [
      -                            "epic-hero",
      -                            "character",
      -                            "battleline",
      -                            "infantry",
      -                            "swarm",
      -                            "mounted",
      -                            "beast",
      -                            "monster",
      -                            "vehicle",
      -                            "drone",
      -                            "transport",
      -                            "fortification",
      -                            "other"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "joined": {
      -                          "items": {
      -                            "properties": {
      -                              "label": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "label",
      -                              "name"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "maximum": 10000,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "prebattleRules": {
      -                          "items": {
      -                            "enum": [
      -                              "infiltrators",
      -                              "scouts"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 2,
      -                          "type": "array"
      -                        },
      -                        "strategicReserveExempt": {
      -                          "type": "boolean"
      -                        },
      -                        "transport": {
      -                          "type": "boolean"
      -                        },
      -                        "transportRule": {
      -                          "maxLength": 4000,
      -                          "type": "string"
      -                        },
      -                        "upgrades": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "wargear": {
      -                          "items": {
      -                            "properties": {
      -                              "count": {
      -                                "maximum": 100,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "name",
      -                              "count"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 200,
      -                          "type": "array"
      -                        },
      -                        "warlord": {
      -                          "type": "boolean"
      -                        },
      -                        "warlordEligible": {
      -                          "type": "boolean"
      -                        },
      -                        "wounds": {
      -                          "maximum": 100,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "points",
      -                        "models"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 200,
      -                    "type": "array"
      -                  },
      -                  "waivedRules": {
      -                    "items": {
      -                      "enum": [
      -                        "points-limit",
      -                        "detachments",
      -                        "detachment-points",
      -                        "kotc-infantry",
      -                        "kotc-warlord",
      -                        "kotc-epic-heroes",
      -                        "kotc-toughness",
      -                        "kotc-datasheet-copies"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "maxItems": 8,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "catalogueId",
      -                  "revision",
      -                  "limit",
      -                  "detachment",
      -                  "disposition",
      -                  "units"
      -                ],
      -                "type": "object"
      -              },
      -              "id": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "type": "string"
      -              },
      -              "reminders": {
      -                "items": {
      -                  "properties": {
      -                    "ability": {
      -                      "maxLength": 80,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "description": {
      -                      "maxLength": 10000,
      -                      "type": "string"
      -                    },
      -                    "key": {
      -                      "maxLength": 240,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "timings": {
      -                      "items": {
      -                        "oneOf": [
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "phase-start",
      -                                  "phase-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "enum": [
      -                                  "command",
      -                                  "movement",
      -                                  "shooting",
      -                                  "charge",
      -                                  "fight",
      -                                  "any"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "turn-start",
      -                                  "turn-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "round-start",
      -                                  "round-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "const": "either",
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          }
      -                        ]
      -                      },
      -                      "maxItems": 10,
      -                      "minItems": 1,
      -                      "type": "array"
      -                    },
      -                    "unit": {
      -                      "properties": {
      -                        "index": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "index",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "whileDestroyed": {
      -                      "type": "boolean"
      -                    }
      -                  },
      -                  "required": [
      -                    "key",
      -                    "ability",
      -                    "description",
      -                    "timings"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 100,
      -                "type": "array"
      -              },
      -              "remindersEnabled": {
      -                "type": "boolean"
      -              },
      -              "text": {
      -                "maxLength": 20000,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "name",
      -              "text"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "roster"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "destroyed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "set-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "destroyed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-prep",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "primary": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "awards": {
      -                    "items": {
      -                      "properties": {
      -                        "criteria": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 2000,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "cumulative": {
      -                          "type": "boolean"
      -                        },
      -                        "group": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 100,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "max": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 100,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "mode": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 40,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "per": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 200,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "trigger": {
      -                          "properties": {
      -                            "phase": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "playerTurn": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMax": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMin": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "timing": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            }
      -                          },
      -                          "required": [
      -                            "timing",
      -                            "phase",
      -                            "playerTurn",
      -                            "roundMin",
      -                            "roundMax"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "vp": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "vp",
      -                        "per",
      -                        "mode",
      -                        "max",
      -                        "group",
      -                        "cumulative",
      -                        "criteria",
      -                        "trigger"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "key": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "name": {
      -                    "maxLength": 80,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "key",
      -                  "name"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 6,
      -            "type": "array"
      -          },
      -          "secondaryDeck": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 60,
      -            "type": "array"
      -          },
      -          "secondaryMode": {
      -            "enum": [
      -              "fixed",
      -              "tactical"
      -            ],
      -            "type": "string"
      -          },
      -          "stratagems": {
      -            "items": {
      -              "properties": {
      -                "cp": {
      -                  "maximum": 6,
      -                  "minimum": 0,
      -                  "type": "integer"
      -                },
      -                "detachment": {
      -                  "maxLength": 249,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "limit": {
      -                  "enum": [
      -                    "phase",
      -                    "turn",
      -                    "battle-round",
      -                    "battle",
      -                    "unlimited"
      -                  ],
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "phases": {
      -                  "items": {
      -                    "enum": [
      -                      "command",
      -                      "movement",
      -                      "shooting",
      -                      "charge",
      -                      "fight",
      -                      "end"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "maxItems": 6,
      -                  "type": "array"
      -                },
      -                "turn": {
      -                  "enum": [
      -                    "your-turn",
      -                    "opponent-turn",
      -                    "either"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name",
      -                "cp",
      -                "limit"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 48,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagems",
      -          "secondaries",
      -          "primary",
      -          "secondaryMode"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "deployed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "deploy-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "deployed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "formation": {
      -            "enum": [
      -              "battlefield",
      -              "strategic-reserves",
      -              "deep-strike",
      -              "embarked"
      -            ],
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-unit-formation",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "transportKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "formation"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-painted",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "painted"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "wound-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "damage-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-deployment",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-battlefield",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "terrainLayoutId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId",
      -          "terrainLayoutId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "use-stratagem",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "use-new-orders",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          },
      -          "secondaryKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "stratagemKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagemKey",
      -          "secondaryKey",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "score-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "score-settlement",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "round": {
      -            "maximum": 5,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "scores": {
      -            "items": {
      -              "oneOf": [
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "primary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "secondary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "key": {
      -                      "maxLength": 64,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "status": {
      -                      "const": "achieved",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "key",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                }
      -              ]
      -            },
      -            "maxItems": 31,
      -            "minItems": 1,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "scores"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-secondary-status",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "status": {
      -            "enum": [
      -              "active",
      -              "achieved",
      -              "discarded",
      -              "returned"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "status"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondaries",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 2,
      -            "minItems": 1,
      -            "type": "array"
      -          },
      -          "selected": {
      -            "const": true,
      -            "type": "boolean"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondaries"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-draw",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-scoring",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "select-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reveal-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "begin-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "adjust-cp",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "gainCp": {
      -            "type": "boolean"
      -          },
      -          "keys": {
      -            "items": {
      -              "maxLength": 64,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "kind": {
      -            "const": "resolve-tactical-hand",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "category": {
      -            "enum": [
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          },
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "score",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "category",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "correct-player",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "resource": {
      -            "enum": [
      -              "cp",
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "playerId",
      -          "resource",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "settle-opponent-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "request-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "cancel-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "pause-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "resume-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "concededBy": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "end-battle",
      -            "type": "string"
      -          },
      -          "reason": {
      -            "enum": [
      -              "completed",
      -              "finished-early",
      -              "conceded"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reopen-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "undo",
      -            "type": "string"
      -          },
      -          "target": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "target"
      -        ],
      -        "type": "object"
      -      }
      -    ]
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "attach-saved-roster",
      -        "type": "string"
      -      },
      -      "playerId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "rosterId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "rosterId"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "oneOf": [
      +      {
      +        "properties": {
      +          "clockLimitMinutes": {
      +            "anyOf": [
      +              {
      +                "maximum": 300,
      +                "minimum": 5,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "kind": {
      +            "const": "configure-battle",
      +            "type": "string"
      +          },
      +          "limit": {
      +            "anyOf": [
      +              {
      +                "maximum": 10000,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "missionPackId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "playerCount": {
      +            "anyOf": [
      +              {
      +                "const": 2,
      +                "type": "number"
      +              },
      +              {
      +                "const": 3,
      +                "type": "number"
      +              },
      +              {
      +                "const": 4,
      +                "type": "number"
      +              }
      +            ]
      +          },
      +          "teamBattle": {
      +            "type": "boolean"
      +          },
      +          "terrainLayoutId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "twistId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "limit",
      +          "missionPackId",
      +          "terrainLayoutId",
      +          "twistId",
      +          "clockLimitMinutes"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reset-setup",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "detach-roster",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "eventToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "lock-league-rosters",
      +            "type": "string"
      +          },
      +          "leagueToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "leagueToken"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-setup-step",
      +            "type": "string"
      +          },
      +          "step": {
      +            "maximum": 9,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "step"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-attacker",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "attackerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-first-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "disposition": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-side-disposition",
      +            "type": "string"
      +          },
      +          "side": {
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "side",
      +          "disposition"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "attach-roster",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "prep": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "primary": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "awards": {
      +                            "items": {
      +                              "properties": {
      +                                "criteria": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 2000,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "cumulative": {
      +                                  "type": "boolean"
      +                                },
      +                                "group": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 100,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "max": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maximum": 100,
      +                                      "minimum": 0,
      +                                      "type": "integer"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "mode": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 40,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "per": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 200,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "trigger": {
      +                                  "properties": {
      +                                    "phase": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "playerTurn": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMax": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMin": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "timing": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    }
      +                                  },
      +                                  "required": [
      +                                    "timing",
      +                                    "phase",
      +                                    "playerTurn",
      +                                    "roundMin",
      +                                    "roundMax"
      +                                  ],
      +                                  "type": "object"
      +                                },
      +                                "vp": {
      +                                  "maximum": 100,
      +                                  "minimum": 0,
      +                                  "type": "integer"
      +                                }
      +                              },
      +                              "required": [
      +                                "vp",
      +                                "per",
      +                                "mode",
      +                                "max",
      +                                "group",
      +                                "cumulative",
      +                                "criteria",
      +                                "trigger"
      +                              ],
      +                              "type": "object"
      +                            },
      +                            "maxItems": 20,
      +                            "type": "array"
      +                          },
      +                          "key": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "name": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "key",
      +                          "name"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "secondaries": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 6,
      +                    "type": "array"
      +                  },
      +                  "secondaryDeck": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 60,
      +                    "type": "array"
      +                  },
      +                  "secondaryMode": {
      +                    "enum": [
      +                      "fixed",
      +                      "tactical"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "stratagems": {
      +                    "items": {
      +                      "properties": {
      +                        "cp": {
      +                          "maximum": 6,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "detachment": {
      +                          "maxLength": 249,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "limit": {
      +                          "enum": [
      +                            "phase",
      +                            "turn",
      +                            "battle-round",
      +                            "battle",
      +                            "unlimited"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "phases": {
      +                          "items": {
      +                            "enum": [
      +                              "command",
      +                              "movement",
      +                              "shooting",
      +                              "charge",
      +                              "fight",
      +                              "end"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 6,
      +                          "type": "array"
      +                        },
      +                        "turn": {
      +                          "enum": [
      +                            "your-turn",
      +                            "opponent-turn",
      +                            "either"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "cp",
      +                        "limit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 48,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "stratagems",
      +                  "secondaries",
      +                  "primary",
      +                  "secondaryMode"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "roster": {
      +            "properties": {
      +              "built": {
      +                "properties": {
      +                  "catalogueId": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "detachment": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 80,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachmentIds": {
      +                    "items": {
      +                      "maxLength": 128,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "detachmentPointBudget": {
      +                    "anyOf": [
      +                      {
      +                        "maximum": 3,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachments": {
      +                    "items": {
      +                      "properties": {
      +                        "name": {
      +                          "maxLength": 80,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 3,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "name",
      +                        "points"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "disposition": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 64,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "edition": {
      +                    "properties": {
      +                      "description": {
      +                        "maxLength": 240,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "id": {
      +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "slug": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      +                        "type": "string"
      +                      },
      +                      "status": {
      +                        "enum": [
      +                          "preview",
      +                          "released",
      +                          "retired"
      +                        ],
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "id",
      +                      "name",
      +                      "status"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "limit": {
      +                    "maximum": 10000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "picks": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "catalogueId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "choices": {
      +                          "additionalProperties": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 60,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        },
      +                        "spreads": {
      +                          "additionalProperties": {
      +                            "additionalProperties": {
      +                              "maximum": 60,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            "propertyNames": {
      +                              "maxLength": 64,
      +                              "type": "string"
      +                            },
      +                            "type": "object"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "toggles": {
      +                          "additionalProperties": {
      +                            "maximum": 1,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "entryId"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 100,
      +                    "type": "array"
      +                  },
      +                  "revision": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "strategicReserveLimit": {
      +                    "maximum": 5000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "enhancements": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "formationOptions": {
      +                          "items": {
      +                            "enum": [
      +                              "battlefield",
      +                              "strategic-reserves",
      +                              "deep-strike",
      +                              "embarked"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 4,
      +                          "type": "array"
      +                        },
      +                        "group": {
      +                          "enum": [
      +                            "epic-hero",
      +                            "character",
      +                            "battleline",
      +                            "infantry",
      +                            "swarm",
      +                            "mounted",
      +                            "beast",
      +                            "monster",
      +                            "vehicle",
      +                            "drone",
      +                            "transport",
      +                            "fortification",
      +                            "other"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "joined": {
      +                          "items": {
      +                            "properties": {
      +                              "label": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "label",
      +                              "name"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "maximum": 10000,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "prebattleRules": {
      +                          "items": {
      +                            "enum": [
      +                              "infiltrators",
      +                              "scouts"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 2,
      +                          "type": "array"
      +                        },
      +                        "strategicReserveExempt": {
      +                          "type": "boolean"
      +                        },
      +                        "transport": {
      +                          "type": "boolean"
      +                        },
      +                        "transportRule": {
      +                          "maxLength": 4000,
      +                          "type": "string"
      +                        },
      +                        "upgrades": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "wargear": {
      +                          "items": {
      +                            "properties": {
      +                              "count": {
      +                                "maximum": 100,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "name",
      +                              "count"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 200,
      +                          "type": "array"
      +                        },
      +                        "warlord": {
      +                          "type": "boolean"
      +                        },
      +                        "warlordEligible": {
      +                          "type": "boolean"
      +                        },
      +                        "wounds": {
      +                          "maximum": 100,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "points",
      +                        "models"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 200,
      +                    "type": "array"
      +                  },
      +                  "waivedRules": {
      +                    "items": {
      +                      "enum": [
      +                        "points-limit",
      +                        "detachments",
      +                        "detachment-points",
      +                        "kotc-infantry",
      +                        "kotc-warlord",
      +                        "kotc-epic-heroes",
      +                        "kotc-toughness",
      +                        "kotc-datasheet-copies"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "maxItems": 8,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "catalogueId",
      +                  "revision",
      +                  "limit",
      +                  "detachment",
      +                  "disposition",
      +                  "units"
      +                ],
      +                "type": "object"
      +              },
      +              "id": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "type": "string"
      +              },
      +              "reminders": {
      +                "items": {
      +                  "properties": {
      +                    "ability": {
      +                      "maxLength": 80,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "description": {
      +                      "maxLength": 10000,
      +                      "type": "string"
      +                    },
      +                    "key": {
      +                      "maxLength": 240,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "timings": {
      +                      "items": {
      +                        "oneOf": [
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "phase-start",
      +                                  "phase-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "enum": [
      +                                  "command",
      +                                  "movement",
      +                                  "shooting",
      +                                  "charge",
      +                                  "fight",
      +                                  "any"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "turn-start",
      +                                  "turn-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "round-start",
      +                                  "round-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "const": "either",
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          }
      +                        ]
      +                      },
      +                      "maxItems": 10,
      +                      "minItems": 1,
      +                      "type": "array"
      +                    },
      +                    "unit": {
      +                      "properties": {
      +                        "index": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "index",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "whileDestroyed": {
      +                      "type": "boolean"
      +                    }
      +                  },
      +                  "required": [
      +                    "key",
      +                    "ability",
      +                    "description",
      +                    "timings"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 100,
      +                "type": "array"
      +              },
      +              "remindersEnabled": {
      +                "type": "boolean"
      +              },
      +              "text": {
      +                "maxLength": 20000,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "text"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "roster"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "destroyed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "set-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "destroyed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-prep",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "primary": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "awards": {
      +                    "items": {
      +                      "properties": {
      +                        "criteria": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 2000,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "cumulative": {
      +                          "type": "boolean"
      +                        },
      +                        "group": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 100,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "max": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 100,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "mode": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 40,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "per": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 200,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "trigger": {
      +                          "properties": {
      +                            "phase": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "playerTurn": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMax": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMin": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "timing": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            }
      +                          },
      +                          "required": [
      +                            "timing",
      +                            "phase",
      +                            "playerTurn",
      +                            "roundMin",
      +                            "roundMax"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "vp": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "vp",
      +                        "per",
      +                        "mode",
      +                        "max",
      +                        "group",
      +                        "cumulative",
      +                        "criteria",
      +                        "trigger"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "key": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "maxLength": 80,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "key",
      +                  "name"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 6,
      +            "type": "array"
      +          },
      +          "secondaryDeck": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 60,
      +            "type": "array"
      +          },
      +          "secondaryMode": {
      +            "enum": [
      +              "fixed",
      +              "tactical"
      +            ],
      +            "type": "string"
      +          },
      +          "stratagems": {
      +            "items": {
      +              "properties": {
      +                "cp": {
      +                  "maximum": 6,
      +                  "minimum": 0,
      +                  "type": "integer"
      +                },
      +                "detachment": {
      +                  "maxLength": 249,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "limit": {
      +                  "enum": [
      +                    "phase",
      +                    "turn",
      +                    "battle-round",
      +                    "battle",
      +                    "unlimited"
      +                  ],
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "phases": {
      +                  "items": {
      +                    "enum": [
      +                      "command",
      +                      "movement",
      +                      "shooting",
      +                      "charge",
      +                      "fight",
      +                      "end"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "maxItems": 6,
      +                  "type": "array"
      +                },
      +                "turn": {
      +                  "enum": [
      +                    "your-turn",
      +                    "opponent-turn",
      +                    "either"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name",
      +                "cp",
      +                "limit"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 48,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagems",
      +          "secondaries",
      +          "primary",
      +          "secondaryMode"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "deployed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "deploy-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "deployed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "formation": {
      +            "enum": [
      +              "battlefield",
      +              "strategic-reserves",
      +              "deep-strike",
      +              "embarked"
      +            ],
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-unit-formation",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "transportKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "formation"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-painted",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "painted"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "wound-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "damage-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-deployment",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-battlefield",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "terrainLayoutId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId",
      +          "terrainLayoutId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "use-stratagem",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "use-new-orders",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          },
      +          "secondaryKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "stratagemKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagemKey",
      +          "secondaryKey",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "score-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "score-settlement",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "round": {
      +            "maximum": 5,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "scores": {
      +            "items": {
      +              "oneOf": [
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "primary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "final": {
      +                      "properties": {
      +                        "claims": {
      +                          "items": {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "delta": {
      +                          "exclusiveMinimum": 0,
      +                          "maximum": 9007199254740991,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "claims",
      +                        "delta"
      +                      ],
      +                      "type": "object"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "secondary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "key": {
      +                      "maxLength": 64,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "status": {
      +                      "const": "achieved",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "key",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                }
      +              ]
      +            },
      +            "maxItems": 31,
      +            "minItems": 1,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "scores"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-secondary-status",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "status": {
      +            "enum": [
      +              "active",
      +              "achieved",
      +              "discarded",
      +              "returned"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondaries",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 2,
      +            "minItems": 1,
      +            "type": "array"
      +          },
      +          "selected": {
      +            "const": true,
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondaries"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-draw",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-scoring",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "select-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reveal-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "begin-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "adjust-cp",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "gainCp": {
      +            "type": "boolean"
      +          },
      +          "keys": {
      +            "items": {
      +              "maxLength": 64,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "kind": {
      +            "const": "resolve-tactical-hand",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "category": {
      +            "enum": [
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          },
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "score",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "category",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "correct-player",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "resource": {
      +            "enum": [
      +              "cp",
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "playerId",
      +          "resource",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "settle-opponent-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "request-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "cancel-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "pause-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "resume-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "concededBy": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "end-battle",
      +            "type": "string"
      +          },
      +          "reason": {
      +            "enum": [
      +              "completed",
      +              "finished-early",
      +              "conceded"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reopen-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "undo",
      +            "type": "string"
      +          },
      +          "target": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "target"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "attach-saved-roster",
      +        "type": "string"
      +      },
      +      "playerId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "rosterId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "rosterId"
      +    ],
      +    "type": "object"
      +  }
      +]
  13. Changed1 schema field changed
    • changedInput schema / properties / command / anyOf
      Previous value: -[
      -  {
      -    "oneOf": [
      -      {
      -        "properties": {
      -          "clockLimitMinutes": {
      -            "anyOf": [
      -              {
      -                "maximum": 300,
      -                "minimum": 5,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "kind": {
      -            "const": "configure-battle",
      -            "type": "string"
      -          },
      -          "limit": {
      -            "anyOf": [
      -              {
      -                "maximum": 10000,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "missionPackId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "playerCount": {
      -            "anyOf": [
      -              {
      -                "const": 2,
      -                "type": "number"
      -              },
      -              {
      -                "const": 3,
      -                "type": "number"
      -              },
      -              {
      -                "const": 4,
      -                "type": "number"
      -              }
      -            ]
      -          },
      -          "teamBattle": {
      -            "type": "boolean"
      -          },
      -          "terrainLayoutId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "twistId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "limit",
      -          "missionPackId",
      -          "terrainLayoutId",
      -          "twistId",
      -          "clockLimitMinutes"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reset-setup",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "detach-roster",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "eventToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "lock-league-rosters",
      -            "type": "string"
      -          },
      -          "leagueToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "leagueToken"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-setup-step",
      -            "type": "string"
      -          },
      -          "step": {
      -            "maximum": 9,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "step"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-attacker",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "attackerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-first-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "disposition": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-side-disposition",
      -            "type": "string"
      -          },
      -          "side": {
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "side",
      -          "disposition"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "attach-roster",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "prep": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "primary": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "awards": {
      -                            "items": {
      -                              "properties": {
      -                                "criteria": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 2000,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "cumulative": {
      -                                  "type": "boolean"
      -                                },
      -                                "group": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 100,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "max": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maximum": 100,
      -                                      "minimum": 0,
      -                                      "type": "integer"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "mode": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 40,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "per": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 200,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "trigger": {
      -                                  "properties": {
      -                                    "phase": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "playerTurn": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMax": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMin": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "timing": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    }
      -                                  },
      -                                  "required": [
      -                                    "timing",
      -                                    "phase",
      -                                    "playerTurn",
      -                                    "roundMin",
      -                                    "roundMax"
      -                                  ],
      -                                  "type": "object"
      -                                },
      -                                "vp": {
      -                                  "maximum": 100,
      -                                  "minimum": 0,
      -                                  "type": "integer"
      -                                }
      -                              },
      -                              "required": [
      -                                "vp",
      -                                "per",
      -                                "mode",
      -                                "max",
      -                                "group",
      -                                "cumulative",
      -                                "criteria",
      -                                "trigger"
      -                              ],
      -                              "type": "object"
      -                            },
      -                            "maxItems": 20,
      -                            "type": "array"
      -                          },
      -                          "key": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "name": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "key",
      -                          "name"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "secondaries": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 6,
      -                    "type": "array"
      -                  },
      -                  "secondaryDeck": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 60,
      -                    "type": "array"
      -                  },
      -                  "secondaryMode": {
      -                    "enum": [
      -                      "fixed",
      -                      "tactical"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "stratagems": {
      -                    "items": {
      -                      "properties": {
      -                        "cp": {
      -                          "maximum": 6,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "detachment": {
      -                          "maxLength": 249,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "limit": {
      -                          "enum": [
      -                            "phase",
      -                            "turn",
      -                            "battle-round",
      -                            "battle",
      -                            "unlimited"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "phases": {
      -                          "items": {
      -                            "enum": [
      -                              "command",
      -                              "movement",
      -                              "shooting",
      -                              "charge",
      -                              "fight",
      -                              "end"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 6,
      -                          "type": "array"
      -                        },
      -                        "turn": {
      -                          "enum": [
      -                            "your-turn",
      -                            "opponent-turn",
      -                            "either"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "cp",
      -                        "limit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 48,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "stratagems",
      -                  "secondaries",
      -                  "primary",
      -                  "secondaryMode"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "roster": {
      -            "properties": {
      -              "built": {
      -                "properties": {
      -                  "catalogueId": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "detachment": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 80,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachmentIds": {
      -                    "items": {
      -                      "maxLength": 128,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "detachmentPointBudget": {
      -                    "anyOf": [
      -                      {
      -                        "maximum": 3,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachments": {
      -                    "items": {
      -                      "properties": {
      -                        "name": {
      -                          "maxLength": 80,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 3,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "name",
      -                        "points"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "disposition": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 64,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "edition": {
      -                    "properties": {
      -                      "id": {
      -                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "maxLength": 80,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "status": {
      -                        "enum": [
      -                          "preview",
      -                          "released",
      -                          "retired"
      -                        ],
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "id",
      -                      "name",
      -                      "status"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "limit": {
      -                    "maximum": 10000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "picks": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "catalogueId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "choices": {
      -                          "additionalProperties": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 60,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        },
      -                        "spreads": {
      -                          "additionalProperties": {
      -                            "additionalProperties": {
      -                              "maximum": 60,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            "propertyNames": {
      -                              "maxLength": 64,
      -                              "type": "string"
      -                            },
      -                            "type": "object"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "toggles": {
      -                          "additionalProperties": {
      -                            "maximum": 1,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "entryId"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 100,
      -                    "type": "array"
      -                  },
      -                  "revision": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "strategicReserveLimit": {
      -                    "maximum": 5000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "enhancements": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "formationOptions": {
      -                          "items": {
      -                            "enum": [
      -                              "battlefield",
      -                              "strategic-reserves",
      -                              "deep-strike",
      -                              "embarked"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 4,
      -                          "type": "array"
      -                        },
      -                        "group": {
      -                          "enum": [
      -                            "epic-hero",
      -                            "character",
      -                            "battleline",
      -                            "infantry",
      -                            "swarm",
      -                            "mounted",
      -                            "beast",
      -                            "monster",
      -                            "vehicle",
      -                            "drone",
      -                            "transport",
      -                            "fortification",
      -                            "other"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "joined": {
      -                          "items": {
      -                            "properties": {
      -                              "label": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "label",
      -                              "name"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "maximum": 10000,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "prebattleRules": {
      -                          "items": {
      -                            "enum": [
      -                              "infiltrators",
      -                              "scouts"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 2,
      -                          "type": "array"
      -                        },
      -                        "strategicReserveExempt": {
      -                          "type": "boolean"
      -                        },
      -                        "transport": {
      -                          "type": "boolean"
      -                        },
      -                        "transportRule": {
      -                          "maxLength": 4000,
      -                          "type": "string"
      -                        },
      -                        "upgrades": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "wargear": {
      -                          "items": {
      -                            "properties": {
      -                              "count": {
      -                                "maximum": 100,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "name",
      -                              "count"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 200,
      -                          "type": "array"
      -                        },
      -                        "warlord": {
      -                          "type": "boolean"
      -                        },
      -                        "warlordEligible": {
      -                          "type": "boolean"
      -                        },
      -                        "wounds": {
      -                          "maximum": 100,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "points",
      -                        "models"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 200,
      -                    "type": "array"
      -                  },
      -                  "waivedRules": {
      -                    "items": {
      -                      "enum": [
      -                        "points-limit",
      -                        "detachments",
      -                        "detachment-points",
      -                        "kotc-infantry",
      -                        "kotc-warlord",
      -                        "kotc-epic-heroes",
      -                        "kotc-toughness",
      -                        "kotc-datasheet-copies"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "maxItems": 8,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "catalogueId",
      -                  "revision",
      -                  "limit",
      -                  "detachment",
      -                  "disposition",
      -                  "units"
      -                ],
      -                "type": "object"
      -              },
      -              "id": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "type": "string"
      -              },
      -              "reminders": {
      -                "items": {
      -                  "properties": {
      -                    "ability": {
      -                      "maxLength": 80,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "description": {
      -                      "maxLength": 10000,
      -                      "type": "string"
      -                    },
      -                    "key": {
      -                      "maxLength": 240,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "timings": {
      -                      "items": {
      -                        "oneOf": [
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "phase-start",
      -                                  "phase-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "enum": [
      -                                  "command",
      -                                  "movement",
      -                                  "shooting",
      -                                  "charge",
      -                                  "fight",
      -                                  "any"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "turn-start",
      -                                  "turn-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "round-start",
      -                                  "round-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "const": "either",
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          }
      -                        ]
      -                      },
      -                      "maxItems": 10,
      -                      "minItems": 1,
      -                      "type": "array"
      -                    },
      -                    "unit": {
      -                      "properties": {
      -                        "index": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "index",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "whileDestroyed": {
      -                      "type": "boolean"
      -                    }
      -                  },
      -                  "required": [
      -                    "key",
      -                    "ability",
      -                    "description",
      -                    "timings"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 100,
      -                "type": "array"
      -              },
      -              "remindersEnabled": {
      -                "type": "boolean"
      -              },
      -              "text": {
      -                "maxLength": 20000,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "name",
      -              "text"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "roster"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "destroyed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "set-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "destroyed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-prep",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "primary": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "awards": {
      -                    "items": {
      -                      "properties": {
      -                        "criteria": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 2000,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "cumulative": {
      -                          "type": "boolean"
      -                        },
      -                        "group": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 100,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "max": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 100,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "mode": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 40,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "per": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 200,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "trigger": {
      -                          "properties": {
      -                            "phase": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "playerTurn": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMax": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMin": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "timing": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            }
      -                          },
      -                          "required": [
      -                            "timing",
      -                            "phase",
      -                            "playerTurn",
      -                            "roundMin",
      -                            "roundMax"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "vp": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "vp",
      -                        "per",
      -                        "mode",
      -                        "max",
      -                        "group",
      -                        "cumulative",
      -                        "criteria",
      -                        "trigger"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "key": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "name": {
      -                    "maxLength": 80,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "key",
      -                  "name"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 6,
      -            "type": "array"
      -          },
      -          "secondaryDeck": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 60,
      -            "type": "array"
      -          },
      -          "secondaryMode": {
      -            "enum": [
      -              "fixed",
      -              "tactical"
      -            ],
      -            "type": "string"
      -          },
      -          "stratagems": {
      -            "items": {
      -              "properties": {
      -                "cp": {
      -                  "maximum": 6,
      -                  "minimum": 0,
      -                  "type": "integer"
      -                },
      -                "detachment": {
      -                  "maxLength": 249,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "limit": {
      -                  "enum": [
      -                    "phase",
      -                    "turn",
      -                    "battle-round",
      -                    "battle",
      -                    "unlimited"
      -                  ],
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "phases": {
      -                  "items": {
      -                    "enum": [
      -                      "command",
      -                      "movement",
      -                      "shooting",
      -                      "charge",
      -                      "fight",
      -                      "end"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "maxItems": 6,
      -                  "type": "array"
      -                },
      -                "turn": {
      -                  "enum": [
      -                    "your-turn",
      -                    "opponent-turn",
      -                    "either"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name",
      -                "cp",
      -                "limit"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 48,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagems",
      -          "secondaries",
      -          "primary",
      -          "secondaryMode"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "deployed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "deploy-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "deployed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "formation": {
      -            "enum": [
      -              "battlefield",
      -              "strategic-reserves",
      -              "deep-strike",
      -              "embarked"
      -            ],
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-unit-formation",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "transportKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "formation"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-painted",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "painted"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "wound-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "damage-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-deployment",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-battlefield",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "terrainLayoutId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId",
      -          "terrainLayoutId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "use-stratagem",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "use-new-orders",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          },
      -          "secondaryKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "stratagemKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagemKey",
      -          "secondaryKey",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "score-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "score-settlement",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "round": {
      -            "maximum": 5,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "scores": {
      -            "items": {
      -              "oneOf": [
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "primary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "secondary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "key": {
      -                      "maxLength": 64,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "status": {
      -                      "const": "achieved",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "key",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                }
      -              ]
      -            },
      -            "maxItems": 31,
      -            "minItems": 1,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "scores"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-secondary-status",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "status": {
      -            "enum": [
      -              "active",
      -              "achieved",
      -              "discarded",
      -              "returned"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "status"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondaries",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 2,
      -            "minItems": 1,
      -            "type": "array"
      -          },
      -          "selected": {
      -            "const": true,
      -            "type": "boolean"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondaries"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-draw",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-scoring",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "select-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reveal-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "begin-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "adjust-cp",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "gainCp": {
      -            "type": "boolean"
      -          },
      -          "keys": {
      -            "items": {
      -              "maxLength": 64,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "kind": {
      -            "const": "resolve-tactical-hand",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "category": {
      -            "enum": [
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          },
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "score",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "category",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "correct-player",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "resource": {
      -            "enum": [
      -              "cp",
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "playerId",
      -          "resource",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "settle-opponent-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "request-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "cancel-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "pause-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "resume-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "concededBy": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "end-battle",
      -            "type": "string"
      -          },
      -          "reason": {
      -            "enum": [
      -              "completed",
      -              "finished-early",
      -              "conceded"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reopen-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "undo",
      -            "type": "string"
      -          },
      -          "target": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "target"
      -        ],
      -        "type": "object"
      -      }
      -    ]
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "attach-saved-roster",
      -        "type": "string"
      -      },
      -      "playerId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "rosterId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "rosterId"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "oneOf": [
      +      {
      +        "properties": {
      +          "clockLimitMinutes": {
      +            "anyOf": [
      +              {
      +                "maximum": 300,
      +                "minimum": 5,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "kind": {
      +            "const": "configure-battle",
      +            "type": "string"
      +          },
      +          "limit": {
      +            "anyOf": [
      +              {
      +                "maximum": 10000,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "missionPackId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "playerCount": {
      +            "anyOf": [
      +              {
      +                "const": 2,
      +                "type": "number"
      +              },
      +              {
      +                "const": 3,
      +                "type": "number"
      +              },
      +              {
      +                "const": 4,
      +                "type": "number"
      +              }
      +            ]
      +          },
      +          "teamBattle": {
      +            "type": "boolean"
      +          },
      +          "terrainLayoutId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "twistId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "limit",
      +          "missionPackId",
      +          "terrainLayoutId",
      +          "twistId",
      +          "clockLimitMinutes"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reset-setup",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "detach-roster",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "eventToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "lock-league-rosters",
      +            "type": "string"
      +          },
      +          "leagueToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "leagueToken"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-setup-step",
      +            "type": "string"
      +          },
      +          "step": {
      +            "maximum": 9,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "step"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-attacker",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "attackerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-first-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "disposition": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-side-disposition",
      +            "type": "string"
      +          },
      +          "side": {
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "side",
      +          "disposition"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "attach-roster",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "prep": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "primary": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "awards": {
      +                            "items": {
      +                              "properties": {
      +                                "criteria": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 2000,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "cumulative": {
      +                                  "type": "boolean"
      +                                },
      +                                "group": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 100,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "max": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maximum": 100,
      +                                      "minimum": 0,
      +                                      "type": "integer"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "mode": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 40,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "per": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 200,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "trigger": {
      +                                  "properties": {
      +                                    "phase": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "playerTurn": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMax": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMin": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "timing": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    }
      +                                  },
      +                                  "required": [
      +                                    "timing",
      +                                    "phase",
      +                                    "playerTurn",
      +                                    "roundMin",
      +                                    "roundMax"
      +                                  ],
      +                                  "type": "object"
      +                                },
      +                                "vp": {
      +                                  "maximum": 100,
      +                                  "minimum": 0,
      +                                  "type": "integer"
      +                                }
      +                              },
      +                              "required": [
      +                                "vp",
      +                                "per",
      +                                "mode",
      +                                "max",
      +                                "group",
      +                                "cumulative",
      +                                "criteria",
      +                                "trigger"
      +                              ],
      +                              "type": "object"
      +                            },
      +                            "maxItems": 20,
      +                            "type": "array"
      +                          },
      +                          "key": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "name": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "key",
      +                          "name"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "secondaries": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 6,
      +                    "type": "array"
      +                  },
      +                  "secondaryDeck": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 60,
      +                    "type": "array"
      +                  },
      +                  "secondaryMode": {
      +                    "enum": [
      +                      "fixed",
      +                      "tactical"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "stratagems": {
      +                    "items": {
      +                      "properties": {
      +                        "cp": {
      +                          "maximum": 6,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "detachment": {
      +                          "maxLength": 249,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "limit": {
      +                          "enum": [
      +                            "phase",
      +                            "turn",
      +                            "battle-round",
      +                            "battle",
      +                            "unlimited"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "phases": {
      +                          "items": {
      +                            "enum": [
      +                              "command",
      +                              "movement",
      +                              "shooting",
      +                              "charge",
      +                              "fight",
      +                              "end"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 6,
      +                          "type": "array"
      +                        },
      +                        "turn": {
      +                          "enum": [
      +                            "your-turn",
      +                            "opponent-turn",
      +                            "either"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "cp",
      +                        "limit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 48,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "stratagems",
      +                  "secondaries",
      +                  "primary",
      +                  "secondaryMode"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "roster": {
      +            "properties": {
      +              "built": {
      +                "properties": {
      +                  "catalogueId": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "detachment": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 80,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachmentIds": {
      +                    "items": {
      +                      "maxLength": 128,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "detachmentPointBudget": {
      +                    "anyOf": [
      +                      {
      +                        "maximum": 3,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachments": {
      +                    "items": {
      +                      "properties": {
      +                        "name": {
      +                          "maxLength": 80,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 3,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "name",
      +                        "points"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "disposition": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 64,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "edition": {
      +                    "properties": {
      +                      "description": {
      +                        "maxLength": 240,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "id": {
      +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "slug": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      +                        "type": "string"
      +                      },
      +                      "status": {
      +                        "enum": [
      +                          "preview",
      +                          "released",
      +                          "retired"
      +                        ],
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "id",
      +                      "name",
      +                      "status"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "limit": {
      +                    "maximum": 10000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "picks": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "catalogueId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "choices": {
      +                          "additionalProperties": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 60,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        },
      +                        "spreads": {
      +                          "additionalProperties": {
      +                            "additionalProperties": {
      +                              "maximum": 60,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            "propertyNames": {
      +                              "maxLength": 64,
      +                              "type": "string"
      +                            },
      +                            "type": "object"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "toggles": {
      +                          "additionalProperties": {
      +                            "maximum": 1,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "entryId"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 100,
      +                    "type": "array"
      +                  },
      +                  "revision": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "strategicReserveLimit": {
      +                    "maximum": 5000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "enhancements": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "formationOptions": {
      +                          "items": {
      +                            "enum": [
      +                              "battlefield",
      +                              "strategic-reserves",
      +                              "deep-strike",
      +                              "embarked"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 4,
      +                          "type": "array"
      +                        },
      +                        "group": {
      +                          "enum": [
      +                            "epic-hero",
      +                            "character",
      +                            "battleline",
      +                            "infantry",
      +                            "swarm",
      +                            "mounted",
      +                            "beast",
      +                            "monster",
      +                            "vehicle",
      +                            "drone",
      +                            "transport",
      +                            "fortification",
      +                            "other"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "joined": {
      +                          "items": {
      +                            "properties": {
      +                              "label": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "label",
      +                              "name"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "maximum": 10000,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "prebattleRules": {
      +                          "items": {
      +                            "enum": [
      +                              "infiltrators",
      +                              "scouts"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 2,
      +                          "type": "array"
      +                        },
      +                        "strategicReserveExempt": {
      +                          "type": "boolean"
      +                        },
      +                        "transport": {
      +                          "type": "boolean"
      +                        },
      +                        "transportRule": {
      +                          "maxLength": 4000,
      +                          "type": "string"
      +                        },
      +                        "upgrades": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "wargear": {
      +                          "items": {
      +                            "properties": {
      +                              "count": {
      +                                "maximum": 100,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "name",
      +                              "count"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 200,
      +                          "type": "array"
      +                        },
      +                        "warlord": {
      +                          "type": "boolean"
      +                        },
      +                        "warlordEligible": {
      +                          "type": "boolean"
      +                        },
      +                        "wounds": {
      +                          "maximum": 100,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "points",
      +                        "models"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 200,
      +                    "type": "array"
      +                  },
      +                  "waivedRules": {
      +                    "items": {
      +                      "enum": [
      +                        "points-limit",
      +                        "detachments",
      +                        "detachment-points",
      +                        "kotc-infantry",
      +                        "kotc-warlord",
      +                        "kotc-epic-heroes",
      +                        "kotc-toughness",
      +                        "kotc-datasheet-copies"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "maxItems": 8,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "catalogueId",
      +                  "revision",
      +                  "limit",
      +                  "detachment",
      +                  "disposition",
      +                  "units"
      +                ],
      +                "type": "object"
      +              },
      +              "id": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "type": "string"
      +              },
      +              "reminders": {
      +                "items": {
      +                  "properties": {
      +                    "ability": {
      +                      "maxLength": 80,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "description": {
      +                      "maxLength": 10000,
      +                      "type": "string"
      +                    },
      +                    "key": {
      +                      "maxLength": 240,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "timings": {
      +                      "items": {
      +                        "oneOf": [
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "phase-start",
      +                                  "phase-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "enum": [
      +                                  "command",
      +                                  "movement",
      +                                  "shooting",
      +                                  "charge",
      +                                  "fight",
      +                                  "any"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "turn-start",
      +                                  "turn-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "round-start",
      +                                  "round-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "const": "either",
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          }
      +                        ]
      +                      },
      +                      "maxItems": 10,
      +                      "minItems": 1,
      +                      "type": "array"
      +                    },
      +                    "unit": {
      +                      "properties": {
      +                        "index": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "index",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "whileDestroyed": {
      +                      "type": "boolean"
      +                    }
      +                  },
      +                  "required": [
      +                    "key",
      +                    "ability",
      +                    "description",
      +                    "timings"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 100,
      +                "type": "array"
      +              },
      +              "remindersEnabled": {
      +                "type": "boolean"
      +              },
      +              "text": {
      +                "maxLength": 20000,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "text"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "roster"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "destroyed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "set-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "destroyed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-prep",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "primary": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "awards": {
      +                    "items": {
      +                      "properties": {
      +                        "criteria": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 2000,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "cumulative": {
      +                          "type": "boolean"
      +                        },
      +                        "group": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 100,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "max": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 100,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "mode": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 40,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "per": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 200,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "trigger": {
      +                          "properties": {
      +                            "phase": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "playerTurn": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMax": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMin": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "timing": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            }
      +                          },
      +                          "required": [
      +                            "timing",
      +                            "phase",
      +                            "playerTurn",
      +                            "roundMin",
      +                            "roundMax"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "vp": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "vp",
      +                        "per",
      +                        "mode",
      +                        "max",
      +                        "group",
      +                        "cumulative",
      +                        "criteria",
      +                        "trigger"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "key": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "maxLength": 80,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "key",
      +                  "name"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 6,
      +            "type": "array"
      +          },
      +          "secondaryDeck": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 60,
      +            "type": "array"
      +          },
      +          "secondaryMode": {
      +            "enum": [
      +              "fixed",
      +              "tactical"
      +            ],
      +            "type": "string"
      +          },
      +          "stratagems": {
      +            "items": {
      +              "properties": {
      +                "cp": {
      +                  "maximum": 6,
      +                  "minimum": 0,
      +                  "type": "integer"
      +                },
      +                "detachment": {
      +                  "maxLength": 249,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "limit": {
      +                  "enum": [
      +                    "phase",
      +                    "turn",
      +                    "battle-round",
      +                    "battle",
      +                    "unlimited"
      +                  ],
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "phases": {
      +                  "items": {
      +                    "enum": [
      +                      "command",
      +                      "movement",
      +                      "shooting",
      +                      "charge",
      +                      "fight",
      +                      "end"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "maxItems": 6,
      +                  "type": "array"
      +                },
      +                "turn": {
      +                  "enum": [
      +                    "your-turn",
      +                    "opponent-turn",
      +                    "either"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name",
      +                "cp",
      +                "limit"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 48,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagems",
      +          "secondaries",
      +          "primary",
      +          "secondaryMode"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "deployed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "deploy-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "deployed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "formation": {
      +            "enum": [
      +              "battlefield",
      +              "strategic-reserves",
      +              "deep-strike",
      +              "embarked"
      +            ],
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-unit-formation",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "transportKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "formation"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-painted",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "painted"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "wound-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "damage-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-deployment",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-battlefield",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "terrainLayoutId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId",
      +          "terrainLayoutId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "use-stratagem",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "use-new-orders",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          },
      +          "secondaryKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "stratagemKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagemKey",
      +          "secondaryKey",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "score-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "score-settlement",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "round": {
      +            "maximum": 5,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "scores": {
      +            "items": {
      +              "oneOf": [
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "primary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "secondary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "key": {
      +                      "maxLength": 64,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "status": {
      +                      "const": "achieved",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "key",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                }
      +              ]
      +            },
      +            "maxItems": 31,
      +            "minItems": 1,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "scores"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-secondary-status",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "status": {
      +            "enum": [
      +              "active",
      +              "achieved",
      +              "discarded",
      +              "returned"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondaries",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 2,
      +            "minItems": 1,
      +            "type": "array"
      +          },
      +          "selected": {
      +            "const": true,
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondaries"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-draw",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-scoring",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "select-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reveal-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "begin-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "adjust-cp",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "gainCp": {
      +            "type": "boolean"
      +          },
      +          "keys": {
      +            "items": {
      +              "maxLength": 64,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "kind": {
      +            "const": "resolve-tactical-hand",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "category": {
      +            "enum": [
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          },
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "score",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "category",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "correct-player",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "resource": {
      +            "enum": [
      +              "cp",
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "playerId",
      +          "resource",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "settle-opponent-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "request-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "cancel-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "pause-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "resume-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "concededBy": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "end-battle",
      +            "type": "string"
      +          },
      +          "reason": {
      +            "enum": [
      +              "completed",
      +              "finished-early",
      +              "conceded"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reopen-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "undo",
      +            "type": "string"
      +          },
      +          "target": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "target"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "attach-saved-roster",
      +        "type": "string"
      +      },
      +      "playerId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "rosterId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "rosterId"
      +    ],
      +    "type": "object"
      +  }
      +]
  14. Changed1 schema field changed
    • changedInput schema / properties / command / anyOf
      Previous value: -[
      -  {
      -    "oneOf": [
      -      {
      -        "properties": {
      -          "clockLimitMinutes": {
      -            "anyOf": [
      -              {
      -                "maximum": 300,
      -                "minimum": 5,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "kind": {
      -            "const": "configure-battle",
      -            "type": "string"
      -          },
      -          "limit": {
      -            "anyOf": [
      -              {
      -                "maximum": 10000,
      -                "minimum": 0,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "missionPackId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "playerCount": {
      -            "anyOf": [
      -              {
      -                "const": 2,
      -                "type": "number"
      -              },
      -              {
      -                "const": 3,
      -                "type": "number"
      -              },
      -              {
      -                "const": 4,
      -                "type": "number"
      -              }
      -            ]
      -          },
      -          "teamBattle": {
      -            "type": "boolean"
      -          },
      -          "terrainLayoutId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "twistId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "limit",
      -          "missionPackId",
      -          "terrainLayoutId",
      -          "twistId",
      -          "clockLimitMinutes"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reset-setup",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "detach-roster",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "eventToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "lock-league-rosters",
      -            "type": "string"
      -          },
      -          "leagueToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "leagueToken"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-setup-step",
      -            "type": "string"
      -          },
      -          "step": {
      -            "maximum": 9,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "step"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-attacker",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "attackerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-first-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "disposition": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-side-disposition",
      -            "type": "string"
      -          },
      -          "side": {
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "side",
      -          "disposition"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "attach-roster",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "prep": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "primary": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "awards": {
      -                            "items": {
      -                              "properties": {
      -                                "criteria": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 2000,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "cumulative": {
      -                                  "type": "boolean"
      -                                },
      -                                "group": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 100,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "max": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maximum": 100,
      -                                      "minimum": 0,
      -                                      "type": "integer"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "mode": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 40,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "per": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 200,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "trigger": {
      -                                  "properties": {
      -                                    "phase": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "playerTurn": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMax": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMin": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "timing": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    }
      -                                  },
      -                                  "required": [
      -                                    "timing",
      -                                    "phase",
      -                                    "playerTurn",
      -                                    "roundMin",
      -                                    "roundMax"
      -                                  ],
      -                                  "type": "object"
      -                                },
      -                                "vp": {
      -                                  "maximum": 100,
      -                                  "minimum": 0,
      -                                  "type": "integer"
      -                                }
      -                              },
      -                              "required": [
      -                                "vp",
      -                                "per",
      -                                "mode",
      -                                "max",
      -                                "group",
      -                                "cumulative",
      -                                "criteria",
      -                                "trigger"
      -                              ],
      -                              "type": "object"
      -                            },
      -                            "maxItems": 20,
      -                            "type": "array"
      -                          },
      -                          "key": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "name": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "key",
      -                          "name"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "secondaries": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 6,
      -                    "type": "array"
      -                  },
      -                  "secondaryDeck": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 60,
      -                    "type": "array"
      -                  },
      -                  "secondaryMode": {
      -                    "enum": [
      -                      "fixed",
      -                      "tactical"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "stratagems": {
      -                    "items": {
      -                      "properties": {
      -                        "cp": {
      -                          "maximum": 6,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "detachment": {
      -                          "maxLength": 249,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "limit": {
      -                          "enum": [
      -                            "phase",
      -                            "turn",
      -                            "battle-round",
      -                            "battle",
      -                            "unlimited"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "phases": {
      -                          "items": {
      -                            "enum": [
      -                              "command",
      -                              "movement",
      -                              "shooting",
      -                              "charge",
      -                              "fight",
      -                              "end"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 6,
      -                          "type": "array"
      -                        },
      -                        "turn": {
      -                          "enum": [
      -                            "your-turn",
      -                            "opponent-turn",
      -                            "either"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "cp",
      -                        "limit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 48,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "stratagems",
      -                  "secondaries",
      -                  "primary",
      -                  "secondaryMode"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "roster": {
      -            "properties": {
      -              "built": {
      -                "properties": {
      -                  "catalogueId": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "detachment": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 80,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachmentIds": {
      -                    "items": {
      -                      "maxLength": 128,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "detachmentPointBudget": {
      -                    "anyOf": [
      -                      {
      -                        "maximum": 3,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachments": {
      -                    "items": {
      -                      "properties": {
      -                        "name": {
      -                          "maxLength": 80,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 3,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "name",
      -                        "points"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "disposition": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 64,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "limit": {
      -                    "maximum": 10000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "picks": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "catalogueId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "choices": {
      -                          "additionalProperties": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 60,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        },
      -                        "spreads": {
      -                          "additionalProperties": {
      -                            "additionalProperties": {
      -                              "maximum": 60,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            "propertyNames": {
      -                              "maxLength": 64,
      -                              "type": "string"
      -                            },
      -                            "type": "object"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "toggles": {
      -                          "additionalProperties": {
      -                            "maximum": 1,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "entryId"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 100,
      -                    "type": "array"
      -                  },
      -                  "revision": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "strategicReserveLimit": {
      -                    "maximum": 5000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "enhancements": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "formationOptions": {
      -                          "items": {
      -                            "enum": [
      -                              "battlefield",
      -                              "strategic-reserves",
      -                              "deep-strike",
      -                              "embarked"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 4,
      -                          "type": "array"
      -                        },
      -                        "group": {
      -                          "enum": [
      -                            "epic-hero",
      -                            "character",
      -                            "battleline",
      -                            "infantry",
      -                            "swarm",
      -                            "mounted",
      -                            "beast",
      -                            "monster",
      -                            "vehicle",
      -                            "drone",
      -                            "transport",
      -                            "fortification",
      -                            "other"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "joined": {
      -                          "items": {
      -                            "properties": {
      -                              "label": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "label",
      -                              "name"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "maximum": 10000,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "prebattleRules": {
      -                          "items": {
      -                            "enum": [
      -                              "infiltrators",
      -                              "scouts"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 2,
      -                          "type": "array"
      -                        },
      -                        "strategicReserveExempt": {
      -                          "type": "boolean"
      -                        },
      -                        "transport": {
      -                          "type": "boolean"
      -                        },
      -                        "transportRule": {
      -                          "maxLength": 4000,
      -                          "type": "string"
      -                        },
      -                        "upgrades": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "wargear": {
      -                          "items": {
      -                            "properties": {
      -                              "count": {
      -                                "maximum": 100,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "name",
      -                              "count"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 200,
      -                          "type": "array"
      -                        },
      -                        "warlord": {
      -                          "type": "boolean"
      -                        },
      -                        "warlordEligible": {
      -                          "type": "boolean"
      -                        },
      -                        "wounds": {
      -                          "maximum": 100,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "points",
      -                        "models"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 200,
      -                    "type": "array"
      -                  },
      -                  "waivedRules": {
      -                    "items": {
      -                      "enum": [
      -                        "points-limit",
      -                        "detachments",
      -                        "detachment-points",
      -                        "kotc-infantry",
      -                        "kotc-warlord",
      -                        "kotc-epic-heroes",
      -                        "kotc-toughness",
      -                        "kotc-datasheet-copies"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "maxItems": 8,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "catalogueId",
      -                  "revision",
      -                  "limit",
      -                  "detachment",
      -                  "disposition",
      -                  "units"
      -                ],
      -                "type": "object"
      -              },
      -              "id": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "type": "string"
      -              },
      -              "reminders": {
      -                "items": {
      -                  "properties": {
      -                    "ability": {
      -                      "maxLength": 80,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "description": {
      -                      "maxLength": 10000,
      -                      "type": "string"
      -                    },
      -                    "key": {
      -                      "maxLength": 240,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "timings": {
      -                      "items": {
      -                        "oneOf": [
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "phase-start",
      -                                  "phase-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "enum": [
      -                                  "command",
      -                                  "movement",
      -                                  "shooting",
      -                                  "charge",
      -                                  "fight",
      -                                  "any"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "turn-start",
      -                                  "turn-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "round-start",
      -                                  "round-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "const": "either",
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          }
      -                        ]
      -                      },
      -                      "maxItems": 10,
      -                      "minItems": 1,
      -                      "type": "array"
      -                    },
      -                    "unit": {
      -                      "properties": {
      -                        "index": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "index",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "whileDestroyed": {
      -                      "type": "boolean"
      -                    }
      -                  },
      -                  "required": [
      -                    "key",
      -                    "ability",
      -                    "description",
      -                    "timings"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 100,
      -                "type": "array"
      -              },
      -              "remindersEnabled": {
      -                "type": "boolean"
      -              },
      -              "text": {
      -                "maxLength": 20000,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "name",
      -              "text"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "roster"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "destroyed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "set-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "destroyed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-prep",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "primary": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "awards": {
      -                    "items": {
      -                      "properties": {
      -                        "criteria": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 2000,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "cumulative": {
      -                          "type": "boolean"
      -                        },
      -                        "group": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 100,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "max": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 100,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "mode": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 40,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "per": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 200,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "trigger": {
      -                          "properties": {
      -                            "phase": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "playerTurn": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMax": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMin": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "timing": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            }
      -                          },
      -                          "required": [
      -                            "timing",
      -                            "phase",
      -                            "playerTurn",
      -                            "roundMin",
      -                            "roundMax"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "vp": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "vp",
      -                        "per",
      -                        "mode",
      -                        "max",
      -                        "group",
      -                        "cumulative",
      -                        "criteria",
      -                        "trigger"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "key": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "name": {
      -                    "maxLength": 80,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "key",
      -                  "name"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 6,
      -            "type": "array"
      -          },
      -          "secondaryDeck": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 60,
      -            "type": "array"
      -          },
      -          "secondaryMode": {
      -            "enum": [
      -              "fixed",
      -              "tactical"
      -            ],
      -            "type": "string"
      -          },
      -          "stratagems": {
      -            "items": {
      -              "properties": {
      -                "cp": {
      -                  "maximum": 6,
      -                  "minimum": 0,
      -                  "type": "integer"
      -                },
      -                "detachment": {
      -                  "maxLength": 249,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "limit": {
      -                  "enum": [
      -                    "phase",
      -                    "turn",
      -                    "battle-round",
      -                    "battle",
      -                    "unlimited"
      -                  ],
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "phases": {
      -                  "items": {
      -                    "enum": [
      -                      "command",
      -                      "movement",
      -                      "shooting",
      -                      "charge",
      -                      "fight",
      -                      "end"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "maxItems": 6,
      -                  "type": "array"
      -                },
      -                "turn": {
      -                  "enum": [
      -                    "your-turn",
      -                    "opponent-turn",
      -                    "either"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name",
      -                "cp",
      -                "limit"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 48,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagems",
      -          "secondaries",
      -          "primary",
      -          "secondaryMode"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "deployed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "deploy-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "deployed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "formation": {
      -            "enum": [
      -              "battlefield",
      -              "strategic-reserves",
      -              "deep-strike",
      -              "embarked"
      -            ],
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-unit-formation",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "transportKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "formation"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-painted",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "painted"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "wound-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "damage-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-deployment",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-battlefield",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "terrainLayoutId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId",
      -          "terrainLayoutId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "use-stratagem",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "use-new-orders",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          },
      -          "secondaryKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "stratagemKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagemKey",
      -          "secondaryKey",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "score-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "score-settlement",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "round": {
      -            "maximum": 5,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "scores": {
      -            "items": {
      -              "oneOf": [
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "primary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "secondary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "key": {
      -                      "maxLength": 64,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "status": {
      -                      "const": "achieved",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "key",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                }
      -              ]
      -            },
      -            "maxItems": 31,
      -            "minItems": 1,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "scores"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-secondary-status",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "status": {
      -            "enum": [
      -              "active",
      -              "achieved",
      -              "discarded",
      -              "returned"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "status"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondaries",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 2,
      -            "minItems": 1,
      -            "type": "array"
      -          },
      -          "selected": {
      -            "const": true,
      -            "type": "boolean"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondaries"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-draw",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-scoring",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "select-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reveal-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "begin-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "adjust-cp",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "gainCp": {
      -            "type": "boolean"
      -          },
      -          "keys": {
      -            "items": {
      -              "maxLength": 64,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "kind": {
      -            "const": "resolve-tactical-hand",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "category": {
      -            "enum": [
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          },
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "score",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "category",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "correct-player",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "resource": {
      -            "enum": [
      -              "cp",
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "playerId",
      -          "resource",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "settle-opponent-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "request-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "cancel-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "pause-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "resume-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "concededBy": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "end-battle",
      -            "type": "string"
      -          },
      -          "reason": {
      -            "enum": [
      -              "completed",
      -              "finished-early",
      -              "conceded"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reopen-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "undo",
      -            "type": "string"
      -          },
      -          "target": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "target"
      -        ],
      -        "type": "object"
      -      }
      -    ]
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "attach-saved-roster",
      -        "type": "string"
      -      },
      -      "playerId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "rosterId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "rosterId"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "oneOf": [
      +      {
      +        "properties": {
      +          "clockLimitMinutes": {
      +            "anyOf": [
      +              {
      +                "maximum": 300,
      +                "minimum": 5,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "kind": {
      +            "const": "configure-battle",
      +            "type": "string"
      +          },
      +          "limit": {
      +            "anyOf": [
      +              {
      +                "maximum": 10000,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "missionPackId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "playerCount": {
      +            "anyOf": [
      +              {
      +                "const": 2,
      +                "type": "number"
      +              },
      +              {
      +                "const": 3,
      +                "type": "number"
      +              },
      +              {
      +                "const": 4,
      +                "type": "number"
      +              }
      +            ]
      +          },
      +          "teamBattle": {
      +            "type": "boolean"
      +          },
      +          "terrainLayoutId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "twistId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "limit",
      +          "missionPackId",
      +          "terrainLayoutId",
      +          "twistId",
      +          "clockLimitMinutes"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reset-setup",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "detach-roster",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "eventToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "lock-league-rosters",
      +            "type": "string"
      +          },
      +          "leagueToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "leagueToken"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-setup-step",
      +            "type": "string"
      +          },
      +          "step": {
      +            "maximum": 9,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "step"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-attacker",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "attackerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-first-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "disposition": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-side-disposition",
      +            "type": "string"
      +          },
      +          "side": {
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "side",
      +          "disposition"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "attach-roster",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "prep": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "primary": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "awards": {
      +                            "items": {
      +                              "properties": {
      +                                "criteria": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 2000,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "cumulative": {
      +                                  "type": "boolean"
      +                                },
      +                                "group": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 100,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "max": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maximum": 100,
      +                                      "minimum": 0,
      +                                      "type": "integer"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "mode": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 40,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "per": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 200,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "trigger": {
      +                                  "properties": {
      +                                    "phase": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "playerTurn": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMax": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMin": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "timing": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    }
      +                                  },
      +                                  "required": [
      +                                    "timing",
      +                                    "phase",
      +                                    "playerTurn",
      +                                    "roundMin",
      +                                    "roundMax"
      +                                  ],
      +                                  "type": "object"
      +                                },
      +                                "vp": {
      +                                  "maximum": 100,
      +                                  "minimum": 0,
      +                                  "type": "integer"
      +                                }
      +                              },
      +                              "required": [
      +                                "vp",
      +                                "per",
      +                                "mode",
      +                                "max",
      +                                "group",
      +                                "cumulative",
      +                                "criteria",
      +                                "trigger"
      +                              ],
      +                              "type": "object"
      +                            },
      +                            "maxItems": 20,
      +                            "type": "array"
      +                          },
      +                          "key": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "name": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "key",
      +                          "name"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "secondaries": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 6,
      +                    "type": "array"
      +                  },
      +                  "secondaryDeck": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 60,
      +                    "type": "array"
      +                  },
      +                  "secondaryMode": {
      +                    "enum": [
      +                      "fixed",
      +                      "tactical"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "stratagems": {
      +                    "items": {
      +                      "properties": {
      +                        "cp": {
      +                          "maximum": 6,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "detachment": {
      +                          "maxLength": 249,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "limit": {
      +                          "enum": [
      +                            "phase",
      +                            "turn",
      +                            "battle-round",
      +                            "battle",
      +                            "unlimited"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "phases": {
      +                          "items": {
      +                            "enum": [
      +                              "command",
      +                              "movement",
      +                              "shooting",
      +                              "charge",
      +                              "fight",
      +                              "end"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 6,
      +                          "type": "array"
      +                        },
      +                        "turn": {
      +                          "enum": [
      +                            "your-turn",
      +                            "opponent-turn",
      +                            "either"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "cp",
      +                        "limit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 48,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "stratagems",
      +                  "secondaries",
      +                  "primary",
      +                  "secondaryMode"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "roster": {
      +            "properties": {
      +              "built": {
      +                "properties": {
      +                  "catalogueId": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "detachment": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 80,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachmentIds": {
      +                    "items": {
      +                      "maxLength": 128,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "detachmentPointBudget": {
      +                    "anyOf": [
      +                      {
      +                        "maximum": 3,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachments": {
      +                    "items": {
      +                      "properties": {
      +                        "name": {
      +                          "maxLength": 80,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 3,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "name",
      +                        "points"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "disposition": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 64,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "edition": {
      +                    "properties": {
      +                      "id": {
      +                        "pattern": "^[a-z0-9][a-z0-9-]{0,19}$",
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "maxLength": 80,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "status": {
      +                        "enum": [
      +                          "preview",
      +                          "released",
      +                          "retired"
      +                        ],
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "id",
      +                      "name",
      +                      "status"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "limit": {
      +                    "maximum": 10000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "picks": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "catalogueId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "choices": {
      +                          "additionalProperties": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 60,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        },
      +                        "spreads": {
      +                          "additionalProperties": {
      +                            "additionalProperties": {
      +                              "maximum": 60,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            "propertyNames": {
      +                              "maxLength": 64,
      +                              "type": "string"
      +                            },
      +                            "type": "object"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "toggles": {
      +                          "additionalProperties": {
      +                            "maximum": 1,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "entryId"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 100,
      +                    "type": "array"
      +                  },
      +                  "revision": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "strategicReserveLimit": {
      +                    "maximum": 5000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "enhancements": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "formationOptions": {
      +                          "items": {
      +                            "enum": [
      +                              "battlefield",
      +                              "strategic-reserves",
      +                              "deep-strike",
      +                              "embarked"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 4,
      +                          "type": "array"
      +                        },
      +                        "group": {
      +                          "enum": [
      +                            "epic-hero",
      +                            "character",
      +                            "battleline",
      +                            "infantry",
      +                            "swarm",
      +                            "mounted",
      +                            "beast",
      +                            "monster",
      +                            "vehicle",
      +                            "drone",
      +                            "transport",
      +                            "fortification",
      +                            "other"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "joined": {
      +                          "items": {
      +                            "properties": {
      +                              "label": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "label",
      +                              "name"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "maximum": 10000,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "prebattleRules": {
      +                          "items": {
      +                            "enum": [
      +                              "infiltrators",
      +                              "scouts"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 2,
      +                          "type": "array"
      +                        },
      +                        "strategicReserveExempt": {
      +                          "type": "boolean"
      +                        },
      +                        "transport": {
      +                          "type": "boolean"
      +                        },
      +                        "transportRule": {
      +                          "maxLength": 4000,
      +                          "type": "string"
      +                        },
      +                        "upgrades": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "wargear": {
      +                          "items": {
      +                            "properties": {
      +                              "count": {
      +                                "maximum": 100,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "name",
      +                              "count"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 200,
      +                          "type": "array"
      +                        },
      +                        "warlord": {
      +                          "type": "boolean"
      +                        },
      +                        "warlordEligible": {
      +                          "type": "boolean"
      +                        },
      +                        "wounds": {
      +                          "maximum": 100,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "points",
      +                        "models"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 200,
      +                    "type": "array"
      +                  },
      +                  "waivedRules": {
      +                    "items": {
      +                      "enum": [
      +                        "points-limit",
      +                        "detachments",
      +                        "detachment-points",
      +                        "kotc-infantry",
      +                        "kotc-warlord",
      +                        "kotc-epic-heroes",
      +                        "kotc-toughness",
      +                        "kotc-datasheet-copies"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "maxItems": 8,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "catalogueId",
      +                  "revision",
      +                  "limit",
      +                  "detachment",
      +                  "disposition",
      +                  "units"
      +                ],
      +                "type": "object"
      +              },
      +              "id": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "type": "string"
      +              },
      +              "reminders": {
      +                "items": {
      +                  "properties": {
      +                    "ability": {
      +                      "maxLength": 80,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "description": {
      +                      "maxLength": 10000,
      +                      "type": "string"
      +                    },
      +                    "key": {
      +                      "maxLength": 240,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "timings": {
      +                      "items": {
      +                        "oneOf": [
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "phase-start",
      +                                  "phase-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "enum": [
      +                                  "command",
      +                                  "movement",
      +                                  "shooting",
      +                                  "charge",
      +                                  "fight",
      +                                  "any"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "turn-start",
      +                                  "turn-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "round-start",
      +                                  "round-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "const": "either",
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          }
      +                        ]
      +                      },
      +                      "maxItems": 10,
      +                      "minItems": 1,
      +                      "type": "array"
      +                    },
      +                    "unit": {
      +                      "properties": {
      +                        "index": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "index",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "whileDestroyed": {
      +                      "type": "boolean"
      +                    }
      +                  },
      +                  "required": [
      +                    "key",
      +                    "ability",
      +                    "description",
      +                    "timings"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 100,
      +                "type": "array"
      +              },
      +              "remindersEnabled": {
      +                "type": "boolean"
      +              },
      +              "text": {
      +                "maxLength": 20000,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "text"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "roster"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "destroyed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "set-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "destroyed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-prep",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "primary": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "awards": {
      +                    "items": {
      +                      "properties": {
      +                        "criteria": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 2000,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "cumulative": {
      +                          "type": "boolean"
      +                        },
      +                        "group": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 100,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "max": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 100,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "mode": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 40,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "per": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 200,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "trigger": {
      +                          "properties": {
      +                            "phase": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "playerTurn": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMax": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMin": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "timing": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            }
      +                          },
      +                          "required": [
      +                            "timing",
      +                            "phase",
      +                            "playerTurn",
      +                            "roundMin",
      +                            "roundMax"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "vp": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "vp",
      +                        "per",
      +                        "mode",
      +                        "max",
      +                        "group",
      +                        "cumulative",
      +                        "criteria",
      +                        "trigger"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "key": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "maxLength": 80,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "key",
      +                  "name"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 6,
      +            "type": "array"
      +          },
      +          "secondaryDeck": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 60,
      +            "type": "array"
      +          },
      +          "secondaryMode": {
      +            "enum": [
      +              "fixed",
      +              "tactical"
      +            ],
      +            "type": "string"
      +          },
      +          "stratagems": {
      +            "items": {
      +              "properties": {
      +                "cp": {
      +                  "maximum": 6,
      +                  "minimum": 0,
      +                  "type": "integer"
      +                },
      +                "detachment": {
      +                  "maxLength": 249,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "limit": {
      +                  "enum": [
      +                    "phase",
      +                    "turn",
      +                    "battle-round",
      +                    "battle",
      +                    "unlimited"
      +                  ],
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "phases": {
      +                  "items": {
      +                    "enum": [
      +                      "command",
      +                      "movement",
      +                      "shooting",
      +                      "charge",
      +                      "fight",
      +                      "end"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "maxItems": 6,
      +                  "type": "array"
      +                },
      +                "turn": {
      +                  "enum": [
      +                    "your-turn",
      +                    "opponent-turn",
      +                    "either"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name",
      +                "cp",
      +                "limit"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 48,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagems",
      +          "secondaries",
      +          "primary",
      +          "secondaryMode"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "deployed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "deploy-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "deployed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "formation": {
      +            "enum": [
      +              "battlefield",
      +              "strategic-reserves",
      +              "deep-strike",
      +              "embarked"
      +            ],
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-unit-formation",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "transportKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "formation"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-painted",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "painted"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "wound-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "damage-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-deployment",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-battlefield",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "terrainLayoutId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId",
      +          "terrainLayoutId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "use-stratagem",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "use-new-orders",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          },
      +          "secondaryKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "stratagemKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagemKey",
      +          "secondaryKey",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "score-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "score-settlement",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "round": {
      +            "maximum": 5,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "scores": {
      +            "items": {
      +              "oneOf": [
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "primary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "secondary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "key": {
      +                      "maxLength": 64,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "status": {
      +                      "const": "achieved",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "key",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                }
      +              ]
      +            },
      +            "maxItems": 31,
      +            "minItems": 1,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "scores"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-secondary-status",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "status": {
      +            "enum": [
      +              "active",
      +              "achieved",
      +              "discarded",
      +              "returned"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondaries",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 2,
      +            "minItems": 1,
      +            "type": "array"
      +          },
      +          "selected": {
      +            "const": true,
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondaries"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-draw",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-scoring",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "select-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reveal-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "begin-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "adjust-cp",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "gainCp": {
      +            "type": "boolean"
      +          },
      +          "keys": {
      +            "items": {
      +              "maxLength": 64,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "kind": {
      +            "const": "resolve-tactical-hand",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "category": {
      +            "enum": [
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          },
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "score",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "category",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "correct-player",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "resource": {
      +            "enum": [
      +              "cp",
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "playerId",
      +          "resource",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "settle-opponent-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "request-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "cancel-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "pause-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "resume-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "concededBy": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "end-battle",
      +            "type": "string"
      +          },
      +          "reason": {
      +            "enum": [
      +              "completed",
      +              "finished-early",
      +              "conceded"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reopen-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "undo",
      +            "type": "string"
      +          },
      +          "target": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "target"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "attach-saved-roster",
      +        "type": "string"
      +      },
      +      "playerId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "rosterId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "rosterId"
      +    ],
      +    "type": "object"
      +  }
      +]
  15. Changed1 schema field changed
    • changedInput schema / properties / command / anyOf
      Previous value: -[
      -  {
      -    "oneOf": [
      -      {
      -        "properties": {
      -          "clockLimitMinutes": {
      -            "anyOf": [
      -              {
      -                "maximum": 300,
      -                "minimum": 5,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "kind": {
      -            "const": "configure-battle",
      -            "type": "string"
      -          },
      -          "limit": {
      -            "maximum": 10000,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "missionPackId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "playerCount": {
      -            "anyOf": [
      -              {
      -                "const": 2,
      -                "type": "number"
      -              },
      -              {
      -                "const": 3,
      -                "type": "number"
      -              },
      -              {
      -                "const": 4,
      -                "type": "number"
      -              }
      -            ]
      -          },
      -          "teamBattle": {
      -            "type": "boolean"
      -          },
      -          "terrainLayoutId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "twistId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "limit",
      -          "missionPackId",
      -          "terrainLayoutId",
      -          "twistId",
      -          "clockLimitMinutes"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reset-setup",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "detach-roster",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "eventToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "lock-league-rosters",
      -            "type": "string"
      -          },
      -          "leagueToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "leagueToken"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-setup-step",
      -            "type": "string"
      -          },
      -          "step": {
      -            "maximum": 9,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "step"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-attacker",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "attackerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-first-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "disposition": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-side-disposition",
      -            "type": "string"
      -          },
      -          "side": {
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "side",
      -          "disposition"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "attach-roster",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "prep": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "primary": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "awards": {
      -                            "items": {
      -                              "properties": {
      -                                "criteria": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 2000,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "cumulative": {
      -                                  "type": "boolean"
      -                                },
      -                                "group": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 100,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "max": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maximum": 100,
      -                                      "minimum": 0,
      -                                      "type": "integer"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "mode": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 40,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "per": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 200,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "trigger": {
      -                                  "properties": {
      -                                    "phase": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "playerTurn": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMax": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMin": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "timing": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    }
      -                                  },
      -                                  "required": [
      -                                    "timing",
      -                                    "phase",
      -                                    "playerTurn",
      -                                    "roundMin",
      -                                    "roundMax"
      -                                  ],
      -                                  "type": "object"
      -                                },
      -                                "vp": {
      -                                  "maximum": 100,
      -                                  "minimum": 0,
      -                                  "type": "integer"
      -                                }
      -                              },
      -                              "required": [
      -                                "vp",
      -                                "per",
      -                                "mode",
      -                                "max",
      -                                "group",
      -                                "cumulative",
      -                                "criteria",
      -                                "trigger"
      -                              ],
      -                              "type": "object"
      -                            },
      -                            "maxItems": 20,
      -                            "type": "array"
      -                          },
      -                          "key": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "name": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "key",
      -                          "name"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "secondaries": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 6,
      -                    "type": "array"
      -                  },
      -                  "secondaryDeck": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 60,
      -                    "type": "array"
      -                  },
      -                  "secondaryMode": {
      -                    "enum": [
      -                      "fixed",
      -                      "tactical"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "stratagems": {
      -                    "items": {
      -                      "properties": {
      -                        "cp": {
      -                          "maximum": 6,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "detachment": {
      -                          "maxLength": 249,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "limit": {
      -                          "enum": [
      -                            "phase",
      -                            "turn",
      -                            "battle-round",
      -                            "battle",
      -                            "unlimited"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "phases": {
      -                          "items": {
      -                            "enum": [
      -                              "command",
      -                              "movement",
      -                              "shooting",
      -                              "charge",
      -                              "fight",
      -                              "end"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 6,
      -                          "type": "array"
      -                        },
      -                        "turn": {
      -                          "enum": [
      -                            "your-turn",
      -                            "opponent-turn",
      -                            "either"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "cp",
      -                        "limit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 48,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "stratagems",
      -                  "secondaries",
      -                  "primary",
      -                  "secondaryMode"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "roster": {
      -            "properties": {
      -              "built": {
      -                "properties": {
      -                  "catalogueId": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "detachment": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 80,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachmentIds": {
      -                    "items": {
      -                      "maxLength": 128,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "detachmentPointBudget": {
      -                    "anyOf": [
      -                      {
      -                        "maximum": 3,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachments": {
      -                    "items": {
      -                      "properties": {
      -                        "name": {
      -                          "maxLength": 80,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 3,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "name",
      -                        "points"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "disposition": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 64,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "limit": {
      -                    "maximum": 10000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "picks": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "catalogueId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "choices": {
      -                          "additionalProperties": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 60,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        },
      -                        "spreads": {
      -                          "additionalProperties": {
      -                            "additionalProperties": {
      -                              "maximum": 60,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            "propertyNames": {
      -                              "maxLength": 64,
      -                              "type": "string"
      -                            },
      -                            "type": "object"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "toggles": {
      -                          "additionalProperties": {
      -                            "maximum": 1,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "entryId"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 100,
      -                    "type": "array"
      -                  },
      -                  "revision": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "strategicReserveLimit": {
      -                    "maximum": 5000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "enhancements": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "formationOptions": {
      -                          "items": {
      -                            "enum": [
      -                              "battlefield",
      -                              "strategic-reserves",
      -                              "deep-strike",
      -                              "embarked"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 4,
      -                          "type": "array"
      -                        },
      -                        "group": {
      -                          "enum": [
      -                            "epic-hero",
      -                            "character",
      -                            "battleline",
      -                            "infantry",
      -                            "swarm",
      -                            "mounted",
      -                            "beast",
      -                            "monster",
      -                            "vehicle",
      -                            "drone",
      -                            "transport",
      -                            "fortification",
      -                            "other"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "joined": {
      -                          "items": {
      -                            "properties": {
      -                              "label": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "label",
      -                              "name"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "maximum": 10000,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "prebattleRules": {
      -                          "items": {
      -                            "enum": [
      -                              "infiltrators",
      -                              "scouts"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 2,
      -                          "type": "array"
      -                        },
      -                        "strategicReserveExempt": {
      -                          "type": "boolean"
      -                        },
      -                        "transport": {
      -                          "type": "boolean"
      -                        },
      -                        "transportRule": {
      -                          "maxLength": 4000,
      -                          "type": "string"
      -                        },
      -                        "upgrades": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "wargear": {
      -                          "items": {
      -                            "properties": {
      -                              "count": {
      -                                "maximum": 100,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "name",
      -                              "count"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 200,
      -                          "type": "array"
      -                        },
      -                        "warlord": {
      -                          "type": "boolean"
      -                        },
      -                        "warlordEligible": {
      -                          "type": "boolean"
      -                        },
      -                        "wounds": {
      -                          "maximum": 100,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "points",
      -                        "models"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 200,
      -                    "type": "array"
      -                  },
      -                  "waivedRules": {
      -                    "items": {
      -                      "enum": [
      -                        "points-limit",
      -                        "detachments",
      -                        "detachment-points",
      -                        "kotc-infantry",
      -                        "kotc-warlord",
      -                        "kotc-epic-heroes",
      -                        "kotc-toughness",
      -                        "kotc-datasheet-copies"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "maxItems": 8,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "catalogueId",
      -                  "revision",
      -                  "limit",
      -                  "detachment",
      -                  "disposition",
      -                  "units"
      -                ],
      -                "type": "object"
      -              },
      -              "id": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "type": "string"
      -              },
      -              "reminders": {
      -                "items": {
      -                  "properties": {
      -                    "ability": {
      -                      "maxLength": 80,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "description": {
      -                      "maxLength": 10000,
      -                      "type": "string"
      -                    },
      -                    "key": {
      -                      "maxLength": 240,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "timings": {
      -                      "items": {
      -                        "oneOf": [
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "phase-start",
      -                                  "phase-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "enum": [
      -                                  "command",
      -                                  "movement",
      -                                  "shooting",
      -                                  "charge",
      -                                  "fight",
      -                                  "any"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "turn-start",
      -                                  "turn-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "firstRoundOnly": {
      -                                "type": "boolean"
      -                              },
      -                              "moment": {
      -                                "enum": [
      -                                  "round-start",
      -                                  "round-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "const": "either",
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          }
      -                        ]
      -                      },
      -                      "maxItems": 10,
      -                      "minItems": 1,
      -                      "type": "array"
      -                    },
      -                    "unit": {
      -                      "properties": {
      -                        "index": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "index",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "whileDestroyed": {
      -                      "type": "boolean"
      -                    }
      -                  },
      -                  "required": [
      -                    "key",
      -                    "ability",
      -                    "description",
      -                    "timings"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 100,
      -                "type": "array"
      -              },
      -              "remindersEnabled": {
      -                "type": "boolean"
      -              },
      -              "text": {
      -                "maxLength": 20000,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "name",
      -              "text"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "roster"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "destroyed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "set-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "destroyed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-prep",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "primary": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "awards": {
      -                    "items": {
      -                      "properties": {
      -                        "criteria": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 2000,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "cumulative": {
      -                          "type": "boolean"
      -                        },
      -                        "group": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 100,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "max": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 100,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "mode": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 40,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "per": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 200,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "trigger": {
      -                          "properties": {
      -                            "phase": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "playerTurn": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMax": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMin": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "timing": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            }
      -                          },
      -                          "required": [
      -                            "timing",
      -                            "phase",
      -                            "playerTurn",
      -                            "roundMin",
      -                            "roundMax"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "vp": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "vp",
      -                        "per",
      -                        "mode",
      -                        "max",
      -                        "group",
      -                        "cumulative",
      -                        "criteria",
      -                        "trigger"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "key": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "name": {
      -                    "maxLength": 80,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "key",
      -                  "name"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 6,
      -            "type": "array"
      -          },
      -          "secondaryDeck": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 60,
      -            "type": "array"
      -          },
      -          "secondaryMode": {
      -            "enum": [
      -              "fixed",
      -              "tactical"
      -            ],
      -            "type": "string"
      -          },
      -          "stratagems": {
      -            "items": {
      -              "properties": {
      -                "cp": {
      -                  "maximum": 6,
      -                  "minimum": 0,
      -                  "type": "integer"
      -                },
      -                "detachment": {
      -                  "maxLength": 249,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "limit": {
      -                  "enum": [
      -                    "phase",
      -                    "turn",
      -                    "battle-round",
      -                    "battle",
      -                    "unlimited"
      -                  ],
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "phases": {
      -                  "items": {
      -                    "enum": [
      -                      "command",
      -                      "movement",
      -                      "shooting",
      -                      "charge",
      -                      "fight",
      -                      "end"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "maxItems": 6,
      -                  "type": "array"
      -                },
      -                "turn": {
      -                  "enum": [
      -                    "your-turn",
      -                    "opponent-turn",
      -                    "either"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name",
      -                "cp",
      -                "limit"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 48,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagems",
      -          "secondaries",
      -          "primary",
      -          "secondaryMode"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "deployed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "deploy-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "deployed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "formation": {
      -            "enum": [
      -              "battlefield",
      -              "strategic-reserves",
      -              "deep-strike",
      -              "embarked"
      -            ],
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-unit-formation",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "transportKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "formation"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-painted",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "painted"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "wound-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "damage-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-deployment",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-battlefield",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "terrainLayoutId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId",
      -          "terrainLayoutId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "use-stratagem",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "use-new-orders",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          },
      -          "secondaryKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "stratagemKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagemKey",
      -          "secondaryKey",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "score-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "score-settlement",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "round": {
      -            "maximum": 5,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "scores": {
      -            "items": {
      -              "oneOf": [
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "primary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "secondary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "key": {
      -                      "maxLength": 64,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "status": {
      -                      "const": "achieved",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "key",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                }
      -              ]
      -            },
      -            "maxItems": 31,
      -            "minItems": 1,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "scores"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-secondary-status",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "status": {
      -            "enum": [
      -              "active",
      -              "achieved",
      -              "discarded",
      -              "returned"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "status"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondaries",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 2,
      -            "minItems": 1,
      -            "type": "array"
      -          },
      -          "selected": {
      -            "const": true,
      -            "type": "boolean"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondaries"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-draw",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-scoring",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "select-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reveal-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "begin-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "adjust-cp",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "gainCp": {
      -            "type": "boolean"
      -          },
      -          "keys": {
      -            "items": {
      -              "maxLength": 64,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "kind": {
      -            "const": "resolve-tactical-hand",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "category": {
      -            "enum": [
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          },
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "score",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "category",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "correct-player",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "resource": {
      -            "enum": [
      -              "cp",
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "playerId",
      -          "resource",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "settle-opponent-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "request-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "cancel-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "pause-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "resume-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "concededBy": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "end-battle",
      -            "type": "string"
      -          },
      -          "reason": {
      -            "enum": [
      -              "completed",
      -              "finished-early",
      -              "conceded"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reopen-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "undo",
      -            "type": "string"
      -          },
      -          "target": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "target"
      -        ],
      -        "type": "object"
      -      }
      -    ]
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "attach-saved-roster",
      -        "type": "string"
      -      },
      -      "playerId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "rosterId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "rosterId"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "oneOf": [
      +      {
      +        "properties": {
      +          "clockLimitMinutes": {
      +            "anyOf": [
      +              {
      +                "maximum": 300,
      +                "minimum": 5,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "kind": {
      +            "const": "configure-battle",
      +            "type": "string"
      +          },
      +          "limit": {
      +            "anyOf": [
      +              {
      +                "maximum": 10000,
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "missionPackId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "playerCount": {
      +            "anyOf": [
      +              {
      +                "const": 2,
      +                "type": "number"
      +              },
      +              {
      +                "const": 3,
      +                "type": "number"
      +              },
      +              {
      +                "const": 4,
      +                "type": "number"
      +              }
      +            ]
      +          },
      +          "teamBattle": {
      +            "type": "boolean"
      +          },
      +          "terrainLayoutId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "twistId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "limit",
      +          "missionPackId",
      +          "terrainLayoutId",
      +          "twistId",
      +          "clockLimitMinutes"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reset-setup",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "detach-roster",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "eventToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "lock-league-rosters",
      +            "type": "string"
      +          },
      +          "leagueToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "leagueToken"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-setup-step",
      +            "type": "string"
      +          },
      +          "step": {
      +            "maximum": 9,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "step"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-attacker",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "attackerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-first-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "disposition": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-side-disposition",
      +            "type": "string"
      +          },
      +          "side": {
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "side",
      +          "disposition"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "attach-roster",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "prep": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "primary": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "awards": {
      +                            "items": {
      +                              "properties": {
      +                                "criteria": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 2000,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "cumulative": {
      +                                  "type": "boolean"
      +                                },
      +                                "group": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 100,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "max": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maximum": 100,
      +                                      "minimum": 0,
      +                                      "type": "integer"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "mode": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 40,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "per": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 200,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "trigger": {
      +                                  "properties": {
      +                                    "phase": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "playerTurn": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMax": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMin": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "timing": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    }
      +                                  },
      +                                  "required": [
      +                                    "timing",
      +                                    "phase",
      +                                    "playerTurn",
      +                                    "roundMin",
      +                                    "roundMax"
      +                                  ],
      +                                  "type": "object"
      +                                },
      +                                "vp": {
      +                                  "maximum": 100,
      +                                  "minimum": 0,
      +                                  "type": "integer"
      +                                }
      +                              },
      +                              "required": [
      +                                "vp",
      +                                "per",
      +                                "mode",
      +                                "max",
      +                                "group",
      +                                "cumulative",
      +                                "criteria",
      +                                "trigger"
      +                              ],
      +                              "type": "object"
      +                            },
      +                            "maxItems": 20,
      +                            "type": "array"
      +                          },
      +                          "key": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "name": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "key",
      +                          "name"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "secondaries": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 6,
      +                    "type": "array"
      +                  },
      +                  "secondaryDeck": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 60,
      +                    "type": "array"
      +                  },
      +                  "secondaryMode": {
      +                    "enum": [
      +                      "fixed",
      +                      "tactical"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "stratagems": {
      +                    "items": {
      +                      "properties": {
      +                        "cp": {
      +                          "maximum": 6,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "detachment": {
      +                          "maxLength": 249,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "limit": {
      +                          "enum": [
      +                            "phase",
      +                            "turn",
      +                            "battle-round",
      +                            "battle",
      +                            "unlimited"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "phases": {
      +                          "items": {
      +                            "enum": [
      +                              "command",
      +                              "movement",
      +                              "shooting",
      +                              "charge",
      +                              "fight",
      +                              "end"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 6,
      +                          "type": "array"
      +                        },
      +                        "turn": {
      +                          "enum": [
      +                            "your-turn",
      +                            "opponent-turn",
      +                            "either"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "cp",
      +                        "limit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 48,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "stratagems",
      +                  "secondaries",
      +                  "primary",
      +                  "secondaryMode"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "roster": {
      +            "properties": {
      +              "built": {
      +                "properties": {
      +                  "catalogueId": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "detachment": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 80,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachmentIds": {
      +                    "items": {
      +                      "maxLength": 128,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "detachmentPointBudget": {
      +                    "anyOf": [
      +                      {
      +                        "maximum": 3,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachments": {
      +                    "items": {
      +                      "properties": {
      +                        "name": {
      +                          "maxLength": 80,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 3,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "name",
      +                        "points"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "disposition": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 64,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "limit": {
      +                    "maximum": 10000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "picks": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "catalogueId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "choices": {
      +                          "additionalProperties": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 60,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        },
      +                        "spreads": {
      +                          "additionalProperties": {
      +                            "additionalProperties": {
      +                              "maximum": 60,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            "propertyNames": {
      +                              "maxLength": 64,
      +                              "type": "string"
      +                            },
      +                            "type": "object"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "toggles": {
      +                          "additionalProperties": {
      +                            "maximum": 1,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "entryId"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 100,
      +                    "type": "array"
      +                  },
      +                  "revision": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "strategicReserveLimit": {
      +                    "maximum": 5000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "enhancements": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "formationOptions": {
      +                          "items": {
      +                            "enum": [
      +                              "battlefield",
      +                              "strategic-reserves",
      +                              "deep-strike",
      +                              "embarked"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 4,
      +                          "type": "array"
      +                        },
      +                        "group": {
      +                          "enum": [
      +                            "epic-hero",
      +                            "character",
      +                            "battleline",
      +                            "infantry",
      +                            "swarm",
      +                            "mounted",
      +                            "beast",
      +                            "monster",
      +                            "vehicle",
      +                            "drone",
      +                            "transport",
      +                            "fortification",
      +                            "other"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "joined": {
      +                          "items": {
      +                            "properties": {
      +                              "label": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "label",
      +                              "name"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "maximum": 10000,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "prebattleRules": {
      +                          "items": {
      +                            "enum": [
      +                              "infiltrators",
      +                              "scouts"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 2,
      +                          "type": "array"
      +                        },
      +                        "strategicReserveExempt": {
      +                          "type": "boolean"
      +                        },
      +                        "transport": {
      +                          "type": "boolean"
      +                        },
      +                        "transportRule": {
      +                          "maxLength": 4000,
      +                          "type": "string"
      +                        },
      +                        "upgrades": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "wargear": {
      +                          "items": {
      +                            "properties": {
      +                              "count": {
      +                                "maximum": 100,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "name",
      +                              "count"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 200,
      +                          "type": "array"
      +                        },
      +                        "warlord": {
      +                          "type": "boolean"
      +                        },
      +                        "warlordEligible": {
      +                          "type": "boolean"
      +                        },
      +                        "wounds": {
      +                          "maximum": 100,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "points",
      +                        "models"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 200,
      +                    "type": "array"
      +                  },
      +                  "waivedRules": {
      +                    "items": {
      +                      "enum": [
      +                        "points-limit",
      +                        "detachments",
      +                        "detachment-points",
      +                        "kotc-infantry",
      +                        "kotc-warlord",
      +                        "kotc-epic-heroes",
      +                        "kotc-toughness",
      +                        "kotc-datasheet-copies"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "maxItems": 8,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "catalogueId",
      +                  "revision",
      +                  "limit",
      +                  "detachment",
      +                  "disposition",
      +                  "units"
      +                ],
      +                "type": "object"
      +              },
      +              "id": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "type": "string"
      +              },
      +              "reminders": {
      +                "items": {
      +                  "properties": {
      +                    "ability": {
      +                      "maxLength": 80,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "description": {
      +                      "maxLength": 10000,
      +                      "type": "string"
      +                    },
      +                    "key": {
      +                      "maxLength": 240,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "timings": {
      +                      "items": {
      +                        "oneOf": [
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "phase-start",
      +                                  "phase-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "enum": [
      +                                  "command",
      +                                  "movement",
      +                                  "shooting",
      +                                  "charge",
      +                                  "fight",
      +                                  "any"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "turn-start",
      +                                  "turn-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "round-start",
      +                                  "round-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "const": "either",
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          }
      +                        ]
      +                      },
      +                      "maxItems": 10,
      +                      "minItems": 1,
      +                      "type": "array"
      +                    },
      +                    "unit": {
      +                      "properties": {
      +                        "index": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "index",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "whileDestroyed": {
      +                      "type": "boolean"
      +                    }
      +                  },
      +                  "required": [
      +                    "key",
      +                    "ability",
      +                    "description",
      +                    "timings"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 100,
      +                "type": "array"
      +              },
      +              "remindersEnabled": {
      +                "type": "boolean"
      +              },
      +              "text": {
      +                "maxLength": 20000,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "text"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "roster"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "destroyed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "set-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "destroyed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-prep",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "primary": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "awards": {
      +                    "items": {
      +                      "properties": {
      +                        "criteria": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 2000,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "cumulative": {
      +                          "type": "boolean"
      +                        },
      +                        "group": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 100,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "max": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 100,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "mode": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 40,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "per": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 200,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "trigger": {
      +                          "properties": {
      +                            "phase": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "playerTurn": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMax": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMin": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "timing": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            }
      +                          },
      +                          "required": [
      +                            "timing",
      +                            "phase",
      +                            "playerTurn",
      +                            "roundMin",
      +                            "roundMax"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "vp": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "vp",
      +                        "per",
      +                        "mode",
      +                        "max",
      +                        "group",
      +                        "cumulative",
      +                        "criteria",
      +                        "trigger"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "key": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "maxLength": 80,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "key",
      +                  "name"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 6,
      +            "type": "array"
      +          },
      +          "secondaryDeck": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 60,
      +            "type": "array"
      +          },
      +          "secondaryMode": {
      +            "enum": [
      +              "fixed",
      +              "tactical"
      +            ],
      +            "type": "string"
      +          },
      +          "stratagems": {
      +            "items": {
      +              "properties": {
      +                "cp": {
      +                  "maximum": 6,
      +                  "minimum": 0,
      +                  "type": "integer"
      +                },
      +                "detachment": {
      +                  "maxLength": 249,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "limit": {
      +                  "enum": [
      +                    "phase",
      +                    "turn",
      +                    "battle-round",
      +                    "battle",
      +                    "unlimited"
      +                  ],
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "phases": {
      +                  "items": {
      +                    "enum": [
      +                      "command",
      +                      "movement",
      +                      "shooting",
      +                      "charge",
      +                      "fight",
      +                      "end"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "maxItems": 6,
      +                  "type": "array"
      +                },
      +                "turn": {
      +                  "enum": [
      +                    "your-turn",
      +                    "opponent-turn",
      +                    "either"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name",
      +                "cp",
      +                "limit"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 48,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagems",
      +          "secondaries",
      +          "primary",
      +          "secondaryMode"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "deployed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "deploy-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "deployed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "formation": {
      +            "enum": [
      +              "battlefield",
      +              "strategic-reserves",
      +              "deep-strike",
      +              "embarked"
      +            ],
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-unit-formation",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "transportKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "formation"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-painted",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "painted"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "wound-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "damage-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-deployment",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-battlefield",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "terrainLayoutId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId",
      +          "terrainLayoutId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "use-stratagem",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "use-new-orders",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          },
      +          "secondaryKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "stratagemKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagemKey",
      +          "secondaryKey",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "score-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "score-settlement",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "round": {
      +            "maximum": 5,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "scores": {
      +            "items": {
      +              "oneOf": [
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "primary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "secondary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "key": {
      +                      "maxLength": 64,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "status": {
      +                      "const": "achieved",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "key",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                }
      +              ]
      +            },
      +            "maxItems": 31,
      +            "minItems": 1,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "scores"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-secondary-status",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "status": {
      +            "enum": [
      +              "active",
      +              "achieved",
      +              "discarded",
      +              "returned"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondaries",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 2,
      +            "minItems": 1,
      +            "type": "array"
      +          },
      +          "selected": {
      +            "const": true,
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondaries"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-draw",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-scoring",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "select-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reveal-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "begin-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "adjust-cp",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "gainCp": {
      +            "type": "boolean"
      +          },
      +          "keys": {
      +            "items": {
      +              "maxLength": 64,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "kind": {
      +            "const": "resolve-tactical-hand",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "category": {
      +            "enum": [
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          },
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "score",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "category",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "correct-player",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "resource": {
      +            "enum": [
      +              "cp",
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "playerId",
      +          "resource",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "settle-opponent-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "request-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "cancel-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "pause-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "resume-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "concededBy": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "end-battle",
      +            "type": "string"
      +          },
      +          "reason": {
      +            "enum": [
      +              "completed",
      +              "finished-early",
      +              "conceded"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reopen-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "undo",
      +            "type": "string"
      +          },
      +          "target": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "target"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "attach-saved-roster",
      +        "type": "string"
      +      },
      +      "playerId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "rosterId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "rosterId"
      +    ],
      +    "type": "object"
      +  }
      +]
  16. Changed1 schema field changed
    • changedInput schema / properties / command / anyOf
      Previous value: -[
      -  {
      -    "oneOf": [
      -      {
      -        "properties": {
      -          "clockLimitMinutes": {
      -            "anyOf": [
      -              {
      -                "maximum": 300,
      -                "minimum": 5,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "kind": {
      -            "const": "configure-battle",
      -            "type": "string"
      -          },
      -          "limit": {
      -            "maximum": 10000,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "missionPackId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "playerCount": {
      -            "anyOf": [
      -              {
      -                "const": 2,
      -                "type": "number"
      -              },
      -              {
      -                "const": 3,
      -                "type": "number"
      -              },
      -              {
      -                "const": 4,
      -                "type": "number"
      -              }
      -            ]
      -          },
      -          "teamBattle": {
      -            "type": "boolean"
      -          },
      -          "terrainLayoutId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "twistId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "limit",
      -          "missionPackId",
      -          "terrainLayoutId",
      -          "twistId",
      -          "clockLimitMinutes"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reset-setup",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "detach-roster",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "eventToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "lock-league-rosters",
      -            "type": "string"
      -          },
      -          "leagueToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "leagueToken"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-setup-step",
      -            "type": "string"
      -          },
      -          "step": {
      -            "maximum": 9,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "step"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-attacker",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "attackerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-first-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "disposition": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-side-disposition",
      -            "type": "string"
      -          },
      -          "side": {
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "side",
      -          "disposition"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "attach-roster",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "prep": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "primary": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "awards": {
      -                            "items": {
      -                              "properties": {
      -                                "criteria": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 2000,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "cumulative": {
      -                                  "type": "boolean"
      -                                },
      -                                "group": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 100,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "max": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maximum": 100,
      -                                      "minimum": 0,
      -                                      "type": "integer"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "mode": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 40,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "per": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 200,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "trigger": {
      -                                  "properties": {
      -                                    "phase": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "playerTurn": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMax": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMin": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "timing": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    }
      -                                  },
      -                                  "required": [
      -                                    "timing",
      -                                    "phase",
      -                                    "playerTurn",
      -                                    "roundMin",
      -                                    "roundMax"
      -                                  ],
      -                                  "type": "object"
      -                                },
      -                                "vp": {
      -                                  "maximum": 100,
      -                                  "minimum": 0,
      -                                  "type": "integer"
      -                                }
      -                              },
      -                              "required": [
      -                                "vp",
      -                                "per",
      -                                "mode",
      -                                "max",
      -                                "group",
      -                                "cumulative",
      -                                "criteria",
      -                                "trigger"
      -                              ],
      -                              "type": "object"
      -                            },
      -                            "maxItems": 20,
      -                            "type": "array"
      -                          },
      -                          "key": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "name": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "key",
      -                          "name"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "secondaries": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 6,
      -                    "type": "array"
      -                  },
      -                  "secondaryDeck": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 60,
      -                    "type": "array"
      -                  },
      -                  "secondaryMode": {
      -                    "enum": [
      -                      "fixed",
      -                      "tactical"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "stratagems": {
      -                    "items": {
      -                      "properties": {
      -                        "cp": {
      -                          "maximum": 6,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "detachment": {
      -                          "maxLength": 249,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "limit": {
      -                          "enum": [
      -                            "phase",
      -                            "turn",
      -                            "battle-round",
      -                            "battle",
      -                            "unlimited"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "phases": {
      -                          "items": {
      -                            "enum": [
      -                              "command",
      -                              "movement",
      -                              "shooting",
      -                              "charge",
      -                              "fight",
      -                              "end"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 6,
      -                          "type": "array"
      -                        },
      -                        "turn": {
      -                          "enum": [
      -                            "your-turn",
      -                            "opponent-turn",
      -                            "either"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "cp",
      -                        "limit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 48,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "stratagems",
      -                  "secondaries",
      -                  "primary",
      -                  "secondaryMode"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "roster": {
      -            "properties": {
      -              "built": {
      -                "properties": {
      -                  "catalogueId": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "detachment": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 80,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachmentIds": {
      -                    "items": {
      -                      "maxLength": 128,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "detachmentPointBudget": {
      -                    "anyOf": [
      -                      {
      -                        "maximum": 3,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachments": {
      -                    "items": {
      -                      "properties": {
      -                        "name": {
      -                          "maxLength": 80,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 3,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "name",
      -                        "points"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "disposition": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 64,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "limit": {
      -                    "maximum": 10000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "picks": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "catalogueId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "choices": {
      -                          "additionalProperties": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 60,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        },
      -                        "spreads": {
      -                          "additionalProperties": {
      -                            "additionalProperties": {
      -                              "maximum": 60,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            "propertyNames": {
      -                              "maxLength": 64,
      -                              "type": "string"
      -                            },
      -                            "type": "object"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "toggles": {
      -                          "additionalProperties": {
      -                            "maximum": 1,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "entryId"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 100,
      -                    "type": "array"
      -                  },
      -                  "revision": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "strategicReserveLimit": {
      -                    "maximum": 5000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "enhancements": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "formationOptions": {
      -                          "items": {
      -                            "enum": [
      -                              "battlefield",
      -                              "strategic-reserves",
      -                              "deep-strike",
      -                              "embarked"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 4,
      -                          "type": "array"
      -                        },
      -                        "group": {
      -                          "enum": [
      -                            "epic-hero",
      -                            "character",
      -                            "battleline",
      -                            "infantry",
      -                            "swarm",
      -                            "mounted",
      -                            "beast",
      -                            "monster",
      -                            "vehicle",
      -                            "drone",
      -                            "transport",
      -                            "fortification",
      -                            "other"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "joined": {
      -                          "items": {
      -                            "properties": {
      -                              "label": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "label",
      -                              "name"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "maximum": 10000,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "prebattleRules": {
      -                          "items": {
      -                            "enum": [
      -                              "infiltrators",
      -                              "scouts"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 2,
      -                          "type": "array"
      -                        },
      -                        "strategicReserveExempt": {
      -                          "type": "boolean"
      -                        },
      -                        "transport": {
      -                          "type": "boolean"
      -                        },
      -                        "transportRule": {
      -                          "maxLength": 4000,
      -                          "type": "string"
      -                        },
      -                        "upgrades": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "wargear": {
      -                          "items": {
      -                            "properties": {
      -                              "count": {
      -                                "maximum": 100,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "name",
      -                              "count"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 200,
      -                          "type": "array"
      -                        },
      -                        "warlord": {
      -                          "type": "boolean"
      -                        },
      -                        "warlordEligible": {
      -                          "type": "boolean"
      -                        },
      -                        "wounds": {
      -                          "maximum": 100,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "points",
      -                        "models"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 200,
      -                    "type": "array"
      -                  },
      -                  "waivedRules": {
      -                    "items": {
      -                      "enum": [
      -                        "points-limit",
      -                        "detachments",
      -                        "detachment-points",
      -                        "kotc-infantry",
      -                        "kotc-warlord",
      -                        "kotc-epic-heroes",
      -                        "kotc-toughness",
      -                        "kotc-datasheet-copies"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "maxItems": 8,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "catalogueId",
      -                  "revision",
      -                  "limit",
      -                  "detachment",
      -                  "disposition",
      -                  "units"
      -                ],
      -                "type": "object"
      -              },
      -              "id": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "type": "string"
      -              },
      -              "reminders": {
      -                "items": {
      -                  "properties": {
      -                    "ability": {
      -                      "maxLength": 80,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "description": {
      -                      "maxLength": 10000,
      -                      "type": "string"
      -                    },
      -                    "key": {
      -                      "maxLength": 240,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "timings": {
      -                      "items": {
      -                        "oneOf": [
      -                          {
      -                            "properties": {
      -                              "moment": {
      -                                "enum": [
      -                                  "phase-start",
      -                                  "phase-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "enum": [
      -                                  "command",
      -                                  "movement",
      -                                  "shooting",
      -                                  "charge",
      -                                  "fight"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "moment": {
      -                                "enum": [
      -                                  "turn-start",
      -                                  "turn-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          }
      -                        ]
      -                      },
      -                      "maxItems": 10,
      -                      "minItems": 1,
      -                      "type": "array"
      -                    },
      -                    "unit": {
      -                      "properties": {
      -                        "index": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "index",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    }
      -                  },
      -                  "required": [
      -                    "key",
      -                    "ability",
      -                    "description",
      -                    "timings"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 100,
      -                "type": "array"
      -              },
      -              "remindersEnabled": {
      -                "type": "boolean"
      -              },
      -              "text": {
      -                "maxLength": 20000,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "name",
      -              "text"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "roster"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "destroyed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "set-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "destroyed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-prep",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "primary": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "awards": {
      -                    "items": {
      -                      "properties": {
      -                        "criteria": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 2000,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "cumulative": {
      -                          "type": "boolean"
      -                        },
      -                        "group": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 100,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "max": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 100,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "mode": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 40,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "per": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 200,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "trigger": {
      -                          "properties": {
      -                            "phase": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "playerTurn": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMax": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMin": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "timing": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            }
      -                          },
      -                          "required": [
      -                            "timing",
      -                            "phase",
      -                            "playerTurn",
      -                            "roundMin",
      -                            "roundMax"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "vp": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "vp",
      -                        "per",
      -                        "mode",
      -                        "max",
      -                        "group",
      -                        "cumulative",
      -                        "criteria",
      -                        "trigger"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "key": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "name": {
      -                    "maxLength": 80,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "key",
      -                  "name"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 6,
      -            "type": "array"
      -          },
      -          "secondaryDeck": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 60,
      -            "type": "array"
      -          },
      -          "secondaryMode": {
      -            "enum": [
      -              "fixed",
      -              "tactical"
      -            ],
      -            "type": "string"
      -          },
      -          "stratagems": {
      -            "items": {
      -              "properties": {
      -                "cp": {
      -                  "maximum": 6,
      -                  "minimum": 0,
      -                  "type": "integer"
      -                },
      -                "detachment": {
      -                  "maxLength": 249,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "limit": {
      -                  "enum": [
      -                    "phase",
      -                    "turn",
      -                    "battle-round",
      -                    "battle",
      -                    "unlimited"
      -                  ],
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "phases": {
      -                  "items": {
      -                    "enum": [
      -                      "command",
      -                      "movement",
      -                      "shooting",
      -                      "charge",
      -                      "fight",
      -                      "end"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "maxItems": 6,
      -                  "type": "array"
      -                },
      -                "turn": {
      -                  "enum": [
      -                    "your-turn",
      -                    "opponent-turn",
      -                    "either"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name",
      -                "cp",
      -                "limit"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 48,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagems",
      -          "secondaries",
      -          "primary",
      -          "secondaryMode"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "deployed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "deploy-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "deployed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "formation": {
      -            "enum": [
      -              "battlefield",
      -              "strategic-reserves",
      -              "deep-strike",
      -              "embarked"
      -            ],
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-unit-formation",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "transportKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "formation"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-painted",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "painted"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "wound-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "damage-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-deployment",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-battlefield",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "terrainLayoutId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId",
      -          "terrainLayoutId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "use-stratagem",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "use-new-orders",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          },
      -          "secondaryKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "stratagemKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagemKey",
      -          "secondaryKey",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "score-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "score-settlement",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "round": {
      -            "maximum": 5,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "scores": {
      -            "items": {
      -              "oneOf": [
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "primary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "secondary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "key": {
      -                      "maxLength": 64,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "status": {
      -                      "const": "achieved",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "key",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                }
      -              ]
      -            },
      -            "maxItems": 31,
      -            "minItems": 1,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "scores"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-secondary-status",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "status": {
      -            "enum": [
      -              "active",
      -              "achieved",
      -              "discarded",
      -              "returned"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "status"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondaries",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 2,
      -            "minItems": 1,
      -            "type": "array"
      -          },
      -          "selected": {
      -            "const": true,
      -            "type": "boolean"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondaries"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-draw",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-scoring",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "select-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reveal-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "begin-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "adjust-cp",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "gainCp": {
      -            "type": "boolean"
      -          },
      -          "keys": {
      -            "items": {
      -              "maxLength": 64,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "kind": {
      -            "const": "resolve-tactical-hand",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "category": {
      -            "enum": [
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          },
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "score",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "category",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "correct-player",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "resource": {
      -            "enum": [
      -              "cp",
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "playerId",
      -          "resource",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "settle-opponent-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "request-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "cancel-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "pause-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "resume-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "concededBy": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "end-battle",
      -            "type": "string"
      -          },
      -          "reason": {
      -            "enum": [
      -              "completed",
      -              "finished-early",
      -              "conceded"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reopen-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "undo",
      -            "type": "string"
      -          },
      -          "target": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "target"
      -        ],
      -        "type": "object"
      -      }
      -    ]
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "attach-saved-roster",
      -        "type": "string"
      -      },
      -      "playerId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "rosterId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "rosterId"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "oneOf": [
      +      {
      +        "properties": {
      +          "clockLimitMinutes": {
      +            "anyOf": [
      +              {
      +                "maximum": 300,
      +                "minimum": 5,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "kind": {
      +            "const": "configure-battle",
      +            "type": "string"
      +          },
      +          "limit": {
      +            "maximum": 10000,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "missionPackId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "playerCount": {
      +            "anyOf": [
      +              {
      +                "const": 2,
      +                "type": "number"
      +              },
      +              {
      +                "const": 3,
      +                "type": "number"
      +              },
      +              {
      +                "const": 4,
      +                "type": "number"
      +              }
      +            ]
      +          },
      +          "teamBattle": {
      +            "type": "boolean"
      +          },
      +          "terrainLayoutId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "twistId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "limit",
      +          "missionPackId",
      +          "terrainLayoutId",
      +          "twistId",
      +          "clockLimitMinutes"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reset-setup",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "detach-roster",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "eventToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "lock-league-rosters",
      +            "type": "string"
      +          },
      +          "leagueToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "leagueToken"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-setup-step",
      +            "type": "string"
      +          },
      +          "step": {
      +            "maximum": 9,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "step"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-attacker",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "attackerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-first-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "disposition": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-side-disposition",
      +            "type": "string"
      +          },
      +          "side": {
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "side",
      +          "disposition"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "attach-roster",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "prep": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "primary": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "awards": {
      +                            "items": {
      +                              "properties": {
      +                                "criteria": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 2000,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "cumulative": {
      +                                  "type": "boolean"
      +                                },
      +                                "group": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 100,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "max": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maximum": 100,
      +                                      "minimum": 0,
      +                                      "type": "integer"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "mode": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 40,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "per": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 200,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "trigger": {
      +                                  "properties": {
      +                                    "phase": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "playerTurn": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMax": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMin": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "timing": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    }
      +                                  },
      +                                  "required": [
      +                                    "timing",
      +                                    "phase",
      +                                    "playerTurn",
      +                                    "roundMin",
      +                                    "roundMax"
      +                                  ],
      +                                  "type": "object"
      +                                },
      +                                "vp": {
      +                                  "maximum": 100,
      +                                  "minimum": 0,
      +                                  "type": "integer"
      +                                }
      +                              },
      +                              "required": [
      +                                "vp",
      +                                "per",
      +                                "mode",
      +                                "max",
      +                                "group",
      +                                "cumulative",
      +                                "criteria",
      +                                "trigger"
      +                              ],
      +                              "type": "object"
      +                            },
      +                            "maxItems": 20,
      +                            "type": "array"
      +                          },
      +                          "key": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "name": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "key",
      +                          "name"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "secondaries": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 6,
      +                    "type": "array"
      +                  },
      +                  "secondaryDeck": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 60,
      +                    "type": "array"
      +                  },
      +                  "secondaryMode": {
      +                    "enum": [
      +                      "fixed",
      +                      "tactical"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "stratagems": {
      +                    "items": {
      +                      "properties": {
      +                        "cp": {
      +                          "maximum": 6,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "detachment": {
      +                          "maxLength": 249,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "limit": {
      +                          "enum": [
      +                            "phase",
      +                            "turn",
      +                            "battle-round",
      +                            "battle",
      +                            "unlimited"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "phases": {
      +                          "items": {
      +                            "enum": [
      +                              "command",
      +                              "movement",
      +                              "shooting",
      +                              "charge",
      +                              "fight",
      +                              "end"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 6,
      +                          "type": "array"
      +                        },
      +                        "turn": {
      +                          "enum": [
      +                            "your-turn",
      +                            "opponent-turn",
      +                            "either"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "cp",
      +                        "limit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 48,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "stratagems",
      +                  "secondaries",
      +                  "primary",
      +                  "secondaryMode"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "roster": {
      +            "properties": {
      +              "built": {
      +                "properties": {
      +                  "catalogueId": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "detachment": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 80,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachmentIds": {
      +                    "items": {
      +                      "maxLength": 128,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "detachmentPointBudget": {
      +                    "anyOf": [
      +                      {
      +                        "maximum": 3,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachments": {
      +                    "items": {
      +                      "properties": {
      +                        "name": {
      +                          "maxLength": 80,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 3,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "name",
      +                        "points"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "disposition": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 64,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "limit": {
      +                    "maximum": 10000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "picks": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "catalogueId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "choices": {
      +                          "additionalProperties": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 60,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        },
      +                        "spreads": {
      +                          "additionalProperties": {
      +                            "additionalProperties": {
      +                              "maximum": 60,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            "propertyNames": {
      +                              "maxLength": 64,
      +                              "type": "string"
      +                            },
      +                            "type": "object"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "toggles": {
      +                          "additionalProperties": {
      +                            "maximum": 1,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "entryId"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 100,
      +                    "type": "array"
      +                  },
      +                  "revision": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "strategicReserveLimit": {
      +                    "maximum": 5000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "enhancements": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "formationOptions": {
      +                          "items": {
      +                            "enum": [
      +                              "battlefield",
      +                              "strategic-reserves",
      +                              "deep-strike",
      +                              "embarked"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 4,
      +                          "type": "array"
      +                        },
      +                        "group": {
      +                          "enum": [
      +                            "epic-hero",
      +                            "character",
      +                            "battleline",
      +                            "infantry",
      +                            "swarm",
      +                            "mounted",
      +                            "beast",
      +                            "monster",
      +                            "vehicle",
      +                            "drone",
      +                            "transport",
      +                            "fortification",
      +                            "other"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "joined": {
      +                          "items": {
      +                            "properties": {
      +                              "label": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "label",
      +                              "name"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "maximum": 10000,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "prebattleRules": {
      +                          "items": {
      +                            "enum": [
      +                              "infiltrators",
      +                              "scouts"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 2,
      +                          "type": "array"
      +                        },
      +                        "strategicReserveExempt": {
      +                          "type": "boolean"
      +                        },
      +                        "transport": {
      +                          "type": "boolean"
      +                        },
      +                        "transportRule": {
      +                          "maxLength": 4000,
      +                          "type": "string"
      +                        },
      +                        "upgrades": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "wargear": {
      +                          "items": {
      +                            "properties": {
      +                              "count": {
      +                                "maximum": 100,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "name",
      +                              "count"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 200,
      +                          "type": "array"
      +                        },
      +                        "warlord": {
      +                          "type": "boolean"
      +                        },
      +                        "warlordEligible": {
      +                          "type": "boolean"
      +                        },
      +                        "wounds": {
      +                          "maximum": 100,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "points",
      +                        "models"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 200,
      +                    "type": "array"
      +                  },
      +                  "waivedRules": {
      +                    "items": {
      +                      "enum": [
      +                        "points-limit",
      +                        "detachments",
      +                        "detachment-points",
      +                        "kotc-infantry",
      +                        "kotc-warlord",
      +                        "kotc-epic-heroes",
      +                        "kotc-toughness",
      +                        "kotc-datasheet-copies"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "maxItems": 8,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "catalogueId",
      +                  "revision",
      +                  "limit",
      +                  "detachment",
      +                  "disposition",
      +                  "units"
      +                ],
      +                "type": "object"
      +              },
      +              "id": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "type": "string"
      +              },
      +              "reminders": {
      +                "items": {
      +                  "properties": {
      +                    "ability": {
      +                      "maxLength": 80,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "description": {
      +                      "maxLength": 10000,
      +                      "type": "string"
      +                    },
      +                    "key": {
      +                      "maxLength": 240,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "timings": {
      +                      "items": {
      +                        "oneOf": [
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "phase-start",
      +                                  "phase-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "enum": [
      +                                  "command",
      +                                  "movement",
      +                                  "shooting",
      +                                  "charge",
      +                                  "fight",
      +                                  "any"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "turn-start",
      +                                  "turn-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "firstRoundOnly": {
      +                                "type": "boolean"
      +                              },
      +                              "moment": {
      +                                "enum": [
      +                                  "round-start",
      +                                  "round-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "const": "either",
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          }
      +                        ]
      +                      },
      +                      "maxItems": 10,
      +                      "minItems": 1,
      +                      "type": "array"
      +                    },
      +                    "unit": {
      +                      "properties": {
      +                        "index": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "index",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "whileDestroyed": {
      +                      "type": "boolean"
      +                    }
      +                  },
      +                  "required": [
      +                    "key",
      +                    "ability",
      +                    "description",
      +                    "timings"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 100,
      +                "type": "array"
      +              },
      +              "remindersEnabled": {
      +                "type": "boolean"
      +              },
      +              "text": {
      +                "maxLength": 20000,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "text"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "roster"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "destroyed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "set-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "destroyed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-prep",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "primary": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "awards": {
      +                    "items": {
      +                      "properties": {
      +                        "criteria": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 2000,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "cumulative": {
      +                          "type": "boolean"
      +                        },
      +                        "group": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 100,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "max": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 100,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "mode": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 40,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "per": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 200,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "trigger": {
      +                          "properties": {
      +                            "phase": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "playerTurn": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMax": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMin": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "timing": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            }
      +                          },
      +                          "required": [
      +                            "timing",
      +                            "phase",
      +                            "playerTurn",
      +                            "roundMin",
      +                            "roundMax"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "vp": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "vp",
      +                        "per",
      +                        "mode",
      +                        "max",
      +                        "group",
      +                        "cumulative",
      +                        "criteria",
      +                        "trigger"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "key": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "maxLength": 80,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "key",
      +                  "name"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 6,
      +            "type": "array"
      +          },
      +          "secondaryDeck": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 60,
      +            "type": "array"
      +          },
      +          "secondaryMode": {
      +            "enum": [
      +              "fixed",
      +              "tactical"
      +            ],
      +            "type": "string"
      +          },
      +          "stratagems": {
      +            "items": {
      +              "properties": {
      +                "cp": {
      +                  "maximum": 6,
      +                  "minimum": 0,
      +                  "type": "integer"
      +                },
      +                "detachment": {
      +                  "maxLength": 249,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "limit": {
      +                  "enum": [
      +                    "phase",
      +                    "turn",
      +                    "battle-round",
      +                    "battle",
      +                    "unlimited"
      +                  ],
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "phases": {
      +                  "items": {
      +                    "enum": [
      +                      "command",
      +                      "movement",
      +                      "shooting",
      +                      "charge",
      +                      "fight",
      +                      "end"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "maxItems": 6,
      +                  "type": "array"
      +                },
      +                "turn": {
      +                  "enum": [
      +                    "your-turn",
      +                    "opponent-turn",
      +                    "either"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name",
      +                "cp",
      +                "limit"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 48,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagems",
      +          "secondaries",
      +          "primary",
      +          "secondaryMode"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "deployed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "deploy-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "deployed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "formation": {
      +            "enum": [
      +              "battlefield",
      +              "strategic-reserves",
      +              "deep-strike",
      +              "embarked"
      +            ],
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-unit-formation",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "transportKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "formation"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-painted",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "painted"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "wound-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "damage-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-deployment",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-battlefield",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "terrainLayoutId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId",
      +          "terrainLayoutId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "use-stratagem",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "use-new-orders",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          },
      +          "secondaryKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "stratagemKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagemKey",
      +          "secondaryKey",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "score-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "score-settlement",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "round": {
      +            "maximum": 5,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "scores": {
      +            "items": {
      +              "oneOf": [
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "primary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "secondary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "key": {
      +                      "maxLength": 64,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "status": {
      +                      "const": "achieved",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "key",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                }
      +              ]
      +            },
      +            "maxItems": 31,
      +            "minItems": 1,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "scores"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-secondary-status",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "status": {
      +            "enum": [
      +              "active",
      +              "achieved",
      +              "discarded",
      +              "returned"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondaries",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 2,
      +            "minItems": 1,
      +            "type": "array"
      +          },
      +          "selected": {
      +            "const": true,
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondaries"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-draw",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-scoring",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "select-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reveal-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "begin-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "adjust-cp",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "gainCp": {
      +            "type": "boolean"
      +          },
      +          "keys": {
      +            "items": {
      +              "maxLength": 64,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "kind": {
      +            "const": "resolve-tactical-hand",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "category": {
      +            "enum": [
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          },
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "score",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "category",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "correct-player",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "resource": {
      +            "enum": [
      +              "cp",
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "playerId",
      +          "resource",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "settle-opponent-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "request-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "cancel-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "pause-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "resume-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "concededBy": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "end-battle",
      +            "type": "string"
      +          },
      +          "reason": {
      +            "enum": [
      +              "completed",
      +              "finished-early",
      +              "conceded"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reopen-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "undo",
      +            "type": "string"
      +          },
      +          "target": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "target"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "attach-saved-roster",
      +        "type": "string"
      +      },
      +      "playerId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "rosterId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "rosterId"
      +    ],
      +    "type": "object"
      +  }
      +]
  17. Changed1 schema field changed
    • changedInput schema / properties / command / anyOf
      Previous value: -[
      -  {
      -    "oneOf": [
      -      {
      -        "properties": {
      -          "clockLimitMinutes": {
      -            "anyOf": [
      -              {
      -                "maximum": 300,
      -                "minimum": 5,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "kind": {
      -            "const": "configure-battle",
      -            "type": "string"
      -          },
      -          "limit": {
      -            "maximum": 10000,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "missionPackId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "playerCount": {
      -            "anyOf": [
      -              {
      -                "const": 2,
      -                "type": "number"
      -              },
      -              {
      -                "const": 3,
      -                "type": "number"
      -              },
      -              {
      -                "const": 4,
      -                "type": "number"
      -              }
      -            ]
      -          },
      -          "teamBattle": {
      -            "type": "boolean"
      -          },
      -          "terrainLayoutId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "twistId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "limit",
      -          "missionPackId",
      -          "terrainLayoutId",
      -          "twistId",
      -          "clockLimitMinutes"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reset-setup",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "detach-roster",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "eventToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "lock-league-rosters",
      -            "type": "string"
      -          },
      -          "leagueToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "leagueToken"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-setup-step",
      -            "type": "string"
      -          },
      -          "step": {
      -            "maximum": 9,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "step"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-attacker",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "attackerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-first-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "disposition": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-side-disposition",
      -            "type": "string"
      -          },
      -          "side": {
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "side",
      -          "disposition"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "attach-roster",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "prep": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "primary": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "awards": {
      -                            "items": {
      -                              "properties": {
      -                                "criteria": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 2000,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "cumulative": {
      -                                  "type": "boolean"
      -                                },
      -                                "group": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 100,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "max": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maximum": 100,
      -                                      "minimum": 0,
      -                                      "type": "integer"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "mode": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 40,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "per": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 200,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "trigger": {
      -                                  "properties": {
      -                                    "phase": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "playerTurn": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMax": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMin": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "timing": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    }
      -                                  },
      -                                  "required": [
      -                                    "timing",
      -                                    "phase",
      -                                    "playerTurn",
      -                                    "roundMin",
      -                                    "roundMax"
      -                                  ],
      -                                  "type": "object"
      -                                },
      -                                "vp": {
      -                                  "maximum": 100,
      -                                  "minimum": 0,
      -                                  "type": "integer"
      -                                }
      -                              },
      -                              "required": [
      -                                "vp",
      -                                "per",
      -                                "mode",
      -                                "max",
      -                                "group",
      -                                "cumulative",
      -                                "criteria",
      -                                "trigger"
      -                              ],
      -                              "type": "object"
      -                            },
      -                            "maxItems": 20,
      -                            "type": "array"
      -                          },
      -                          "key": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "name": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "key",
      -                          "name"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "secondaries": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 6,
      -                    "type": "array"
      -                  },
      -                  "secondaryDeck": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 60,
      -                    "type": "array"
      -                  },
      -                  "secondaryMode": {
      -                    "enum": [
      -                      "fixed",
      -                      "tactical"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "stratagems": {
      -                    "items": {
      -                      "properties": {
      -                        "cp": {
      -                          "maximum": 6,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "detachment": {
      -                          "maxLength": 249,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "limit": {
      -                          "enum": [
      -                            "phase",
      -                            "turn",
      -                            "battle",
      -                            "unlimited"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "phases": {
      -                          "items": {
      -                            "enum": [
      -                              "command",
      -                              "movement",
      -                              "shooting",
      -                              "charge",
      -                              "fight",
      -                              "end"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 6,
      -                          "type": "array"
      -                        },
      -                        "turn": {
      -                          "enum": [
      -                            "your-turn",
      -                            "opponent-turn",
      -                            "either"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "cp",
      -                        "limit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 48,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "stratagems",
      -                  "secondaries",
      -                  "primary",
      -                  "secondaryMode"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "roster": {
      -            "properties": {
      -              "built": {
      -                "properties": {
      -                  "catalogueId": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "detachment": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 80,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachmentIds": {
      -                    "items": {
      -                      "maxLength": 128,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "detachmentPointBudget": {
      -                    "anyOf": [
      -                      {
      -                        "maximum": 3,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachments": {
      -                    "items": {
      -                      "properties": {
      -                        "name": {
      -                          "maxLength": 80,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 3,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "name",
      -                        "points"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "disposition": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 64,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "limit": {
      -                    "maximum": 10000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "picks": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "catalogueId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "choices": {
      -                          "additionalProperties": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 60,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        },
      -                        "spreads": {
      -                          "additionalProperties": {
      -                            "additionalProperties": {
      -                              "maximum": 60,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            "propertyNames": {
      -                              "maxLength": 64,
      -                              "type": "string"
      -                            },
      -                            "type": "object"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "toggles": {
      -                          "additionalProperties": {
      -                            "maximum": 1,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "entryId"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 100,
      -                    "type": "array"
      -                  },
      -                  "revision": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "strategicReserveLimit": {
      -                    "maximum": 5000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "enhancements": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "formationOptions": {
      -                          "items": {
      -                            "enum": [
      -                              "battlefield",
      -                              "strategic-reserves",
      -                              "deep-strike",
      -                              "embarked"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 4,
      -                          "type": "array"
      -                        },
      -                        "group": {
      -                          "enum": [
      -                            "epic-hero",
      -                            "character",
      -                            "battleline",
      -                            "infantry",
      -                            "swarm",
      -                            "mounted",
      -                            "beast",
      -                            "monster",
      -                            "vehicle",
      -                            "drone",
      -                            "transport",
      -                            "fortification",
      -                            "other"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "joined": {
      -                          "items": {
      -                            "properties": {
      -                              "label": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "label",
      -                              "name"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "maximum": 10000,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "prebattleRules": {
      -                          "items": {
      -                            "enum": [
      -                              "infiltrators",
      -                              "scouts"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 2,
      -                          "type": "array"
      -                        },
      -                        "strategicReserveExempt": {
      -                          "type": "boolean"
      -                        },
      -                        "transport": {
      -                          "type": "boolean"
      -                        },
      -                        "transportRule": {
      -                          "maxLength": 4000,
      -                          "type": "string"
      -                        },
      -                        "upgrades": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "wargear": {
      -                          "items": {
      -                            "properties": {
      -                              "count": {
      -                                "maximum": 100,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "name",
      -                              "count"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 200,
      -                          "type": "array"
      -                        },
      -                        "warlord": {
      -                          "type": "boolean"
      -                        },
      -                        "warlordEligible": {
      -                          "type": "boolean"
      -                        },
      -                        "wounds": {
      -                          "maximum": 100,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "points",
      -                        "models"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 200,
      -                    "type": "array"
      -                  },
      -                  "waivedRules": {
      -                    "items": {
      -                      "enum": [
      -                        "points-limit",
      -                        "detachments",
      -                        "detachment-points",
      -                        "kotc-infantry",
      -                        "kotc-warlord",
      -                        "kotc-epic-heroes",
      -                        "kotc-toughness",
      -                        "kotc-datasheet-copies"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "maxItems": 8,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "catalogueId",
      -                  "revision",
      -                  "limit",
      -                  "detachment",
      -                  "disposition",
      -                  "units"
      -                ],
      -                "type": "object"
      -              },
      -              "id": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "type": "string"
      -              },
      -              "reminders": {
      -                "items": {
      -                  "properties": {
      -                    "ability": {
      -                      "maxLength": 80,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "description": {
      -                      "maxLength": 10000,
      -                      "type": "string"
      -                    },
      -                    "key": {
      -                      "maxLength": 240,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "timings": {
      -                      "items": {
      -                        "oneOf": [
      -                          {
      -                            "properties": {
      -                              "moment": {
      -                                "enum": [
      -                                  "phase-start",
      -                                  "phase-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "enum": [
      -                                  "command",
      -                                  "movement",
      -                                  "shooting",
      -                                  "charge",
      -                                  "fight"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "moment": {
      -                                "enum": [
      -                                  "turn-start",
      -                                  "turn-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          }
      -                        ]
      -                      },
      -                      "maxItems": 10,
      -                      "minItems": 1,
      -                      "type": "array"
      -                    },
      -                    "unit": {
      -                      "properties": {
      -                        "index": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "index",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    }
      -                  },
      -                  "required": [
      -                    "key",
      -                    "ability",
      -                    "description",
      -                    "timings"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 100,
      -                "type": "array"
      -              },
      -              "remindersEnabled": {
      -                "type": "boolean"
      -              },
      -              "text": {
      -                "maxLength": 20000,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "name",
      -              "text"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "roster"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "destroyed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "set-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "destroyed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-prep",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "primary": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "awards": {
      -                    "items": {
      -                      "properties": {
      -                        "criteria": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 2000,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "cumulative": {
      -                          "type": "boolean"
      -                        },
      -                        "group": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 100,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "max": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 100,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "mode": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 40,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "per": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 200,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "trigger": {
      -                          "properties": {
      -                            "phase": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "playerTurn": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMax": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMin": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "timing": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            }
      -                          },
      -                          "required": [
      -                            "timing",
      -                            "phase",
      -                            "playerTurn",
      -                            "roundMin",
      -                            "roundMax"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "vp": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "vp",
      -                        "per",
      -                        "mode",
      -                        "max",
      -                        "group",
      -                        "cumulative",
      -                        "criteria",
      -                        "trigger"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "key": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "name": {
      -                    "maxLength": 80,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "key",
      -                  "name"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 6,
      -            "type": "array"
      -          },
      -          "secondaryDeck": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 60,
      -            "type": "array"
      -          },
      -          "secondaryMode": {
      -            "enum": [
      -              "fixed",
      -              "tactical"
      -            ],
      -            "type": "string"
      -          },
      -          "stratagems": {
      -            "items": {
      -              "properties": {
      -                "cp": {
      -                  "maximum": 6,
      -                  "minimum": 0,
      -                  "type": "integer"
      -                },
      -                "detachment": {
      -                  "maxLength": 249,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "limit": {
      -                  "enum": [
      -                    "phase",
      -                    "turn",
      -                    "battle",
      -                    "unlimited"
      -                  ],
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "phases": {
      -                  "items": {
      -                    "enum": [
      -                      "command",
      -                      "movement",
      -                      "shooting",
      -                      "charge",
      -                      "fight",
      -                      "end"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "maxItems": 6,
      -                  "type": "array"
      -                },
      -                "turn": {
      -                  "enum": [
      -                    "your-turn",
      -                    "opponent-turn",
      -                    "either"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name",
      -                "cp",
      -                "limit"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 48,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagems",
      -          "secondaries",
      -          "primary",
      -          "secondaryMode"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "deployed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "deploy-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "deployed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "formation": {
      -            "enum": [
      -              "battlefield",
      -              "strategic-reserves",
      -              "deep-strike",
      -              "embarked"
      -            ],
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-unit-formation",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "transportKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "formation"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-painted",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "painted"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "wound-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "damage-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-deployment",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-battlefield",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "terrainLayoutId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId",
      -          "terrainLayoutId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "use-stratagem",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "use-new-orders",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          },
      -          "secondaryKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "stratagemKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagemKey",
      -          "secondaryKey",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "score-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "score-settlement",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "round": {
      -            "maximum": 5,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "scores": {
      -            "items": {
      -              "oneOf": [
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "primary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "secondary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "key": {
      -                      "maxLength": 64,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "status": {
      -                      "const": "achieved",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "key",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                }
      -              ]
      -            },
      -            "maxItems": 31,
      -            "minItems": 1,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "scores"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-secondary-status",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "status": {
      -            "enum": [
      -              "active",
      -              "achieved",
      -              "discarded",
      -              "returned"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "status"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondaries",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 2,
      -            "minItems": 1,
      -            "type": "array"
      -          },
      -          "selected": {
      -            "const": true,
      -            "type": "boolean"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondaries"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-draw",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-scoring",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "select-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reveal-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "begin-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "adjust-cp",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "gainCp": {
      -            "type": "boolean"
      -          },
      -          "keys": {
      -            "items": {
      -              "maxLength": 64,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "kind": {
      -            "const": "resolve-tactical-hand",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "category": {
      -            "enum": [
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          },
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "score",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "category",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "correct-player",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "resource": {
      -            "enum": [
      -              "cp",
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "playerId",
      -          "resource",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "settle-opponent-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "request-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "cancel-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "pause-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "resume-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "concededBy": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "end-battle",
      -            "type": "string"
      -          },
      -          "reason": {
      -            "enum": [
      -              "completed",
      -              "finished-early",
      -              "conceded"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reopen-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "undo",
      -            "type": "string"
      -          },
      -          "target": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "target"
      -        ],
      -        "type": "object"
      -      }
      -    ]
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "attach-saved-roster",
      -        "type": "string"
      -      },
      -      "playerId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "rosterId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "rosterId"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "oneOf": [
      +      {
      +        "properties": {
      +          "clockLimitMinutes": {
      +            "anyOf": [
      +              {
      +                "maximum": 300,
      +                "minimum": 5,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "kind": {
      +            "const": "configure-battle",
      +            "type": "string"
      +          },
      +          "limit": {
      +            "maximum": 10000,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "missionPackId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "playerCount": {
      +            "anyOf": [
      +              {
      +                "const": 2,
      +                "type": "number"
      +              },
      +              {
      +                "const": 3,
      +                "type": "number"
      +              },
      +              {
      +                "const": 4,
      +                "type": "number"
      +              }
      +            ]
      +          },
      +          "teamBattle": {
      +            "type": "boolean"
      +          },
      +          "terrainLayoutId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "twistId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "limit",
      +          "missionPackId",
      +          "terrainLayoutId",
      +          "twistId",
      +          "clockLimitMinutes"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reset-setup",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "detach-roster",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "eventToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "lock-league-rosters",
      +            "type": "string"
      +          },
      +          "leagueToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "leagueToken"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-setup-step",
      +            "type": "string"
      +          },
      +          "step": {
      +            "maximum": 9,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "step"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-attacker",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "attackerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-first-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "disposition": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-side-disposition",
      +            "type": "string"
      +          },
      +          "side": {
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "side",
      +          "disposition"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "attach-roster",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "prep": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "primary": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "awards": {
      +                            "items": {
      +                              "properties": {
      +                                "criteria": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 2000,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "cumulative": {
      +                                  "type": "boolean"
      +                                },
      +                                "group": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 100,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "max": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maximum": 100,
      +                                      "minimum": 0,
      +                                      "type": "integer"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "mode": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 40,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "per": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 200,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "trigger": {
      +                                  "properties": {
      +                                    "phase": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "playerTurn": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMax": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMin": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "timing": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    }
      +                                  },
      +                                  "required": [
      +                                    "timing",
      +                                    "phase",
      +                                    "playerTurn",
      +                                    "roundMin",
      +                                    "roundMax"
      +                                  ],
      +                                  "type": "object"
      +                                },
      +                                "vp": {
      +                                  "maximum": 100,
      +                                  "minimum": 0,
      +                                  "type": "integer"
      +                                }
      +                              },
      +                              "required": [
      +                                "vp",
      +                                "per",
      +                                "mode",
      +                                "max",
      +                                "group",
      +                                "cumulative",
      +                                "criteria",
      +                                "trigger"
      +                              ],
      +                              "type": "object"
      +                            },
      +                            "maxItems": 20,
      +                            "type": "array"
      +                          },
      +                          "key": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "name": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "key",
      +                          "name"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "secondaries": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 6,
      +                    "type": "array"
      +                  },
      +                  "secondaryDeck": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 60,
      +                    "type": "array"
      +                  },
      +                  "secondaryMode": {
      +                    "enum": [
      +                      "fixed",
      +                      "tactical"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "stratagems": {
      +                    "items": {
      +                      "properties": {
      +                        "cp": {
      +                          "maximum": 6,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "detachment": {
      +                          "maxLength": 249,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "limit": {
      +                          "enum": [
      +                            "phase",
      +                            "turn",
      +                            "battle-round",
      +                            "battle",
      +                            "unlimited"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "phases": {
      +                          "items": {
      +                            "enum": [
      +                              "command",
      +                              "movement",
      +                              "shooting",
      +                              "charge",
      +                              "fight",
      +                              "end"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 6,
      +                          "type": "array"
      +                        },
      +                        "turn": {
      +                          "enum": [
      +                            "your-turn",
      +                            "opponent-turn",
      +                            "either"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "cp",
      +                        "limit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 48,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "stratagems",
      +                  "secondaries",
      +                  "primary",
      +                  "secondaryMode"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "roster": {
      +            "properties": {
      +              "built": {
      +                "properties": {
      +                  "catalogueId": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "detachment": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 80,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachmentIds": {
      +                    "items": {
      +                      "maxLength": 128,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "detachmentPointBudget": {
      +                    "anyOf": [
      +                      {
      +                        "maximum": 3,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachments": {
      +                    "items": {
      +                      "properties": {
      +                        "name": {
      +                          "maxLength": 80,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 3,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "name",
      +                        "points"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "disposition": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 64,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "limit": {
      +                    "maximum": 10000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "picks": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "catalogueId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "choices": {
      +                          "additionalProperties": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 60,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        },
      +                        "spreads": {
      +                          "additionalProperties": {
      +                            "additionalProperties": {
      +                              "maximum": 60,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            "propertyNames": {
      +                              "maxLength": 64,
      +                              "type": "string"
      +                            },
      +                            "type": "object"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "toggles": {
      +                          "additionalProperties": {
      +                            "maximum": 1,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "entryId"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 100,
      +                    "type": "array"
      +                  },
      +                  "revision": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "strategicReserveLimit": {
      +                    "maximum": 5000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "enhancements": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "formationOptions": {
      +                          "items": {
      +                            "enum": [
      +                              "battlefield",
      +                              "strategic-reserves",
      +                              "deep-strike",
      +                              "embarked"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 4,
      +                          "type": "array"
      +                        },
      +                        "group": {
      +                          "enum": [
      +                            "epic-hero",
      +                            "character",
      +                            "battleline",
      +                            "infantry",
      +                            "swarm",
      +                            "mounted",
      +                            "beast",
      +                            "monster",
      +                            "vehicle",
      +                            "drone",
      +                            "transport",
      +                            "fortification",
      +                            "other"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "joined": {
      +                          "items": {
      +                            "properties": {
      +                              "label": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "label",
      +                              "name"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "maximum": 10000,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "prebattleRules": {
      +                          "items": {
      +                            "enum": [
      +                              "infiltrators",
      +                              "scouts"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 2,
      +                          "type": "array"
      +                        },
      +                        "strategicReserveExempt": {
      +                          "type": "boolean"
      +                        },
      +                        "transport": {
      +                          "type": "boolean"
      +                        },
      +                        "transportRule": {
      +                          "maxLength": 4000,
      +                          "type": "string"
      +                        },
      +                        "upgrades": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "wargear": {
      +                          "items": {
      +                            "properties": {
      +                              "count": {
      +                                "maximum": 100,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "name",
      +                              "count"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 200,
      +                          "type": "array"
      +                        },
      +                        "warlord": {
      +                          "type": "boolean"
      +                        },
      +                        "warlordEligible": {
      +                          "type": "boolean"
      +                        },
      +                        "wounds": {
      +                          "maximum": 100,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "points",
      +                        "models"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 200,
      +                    "type": "array"
      +                  },
      +                  "waivedRules": {
      +                    "items": {
      +                      "enum": [
      +                        "points-limit",
      +                        "detachments",
      +                        "detachment-points",
      +                        "kotc-infantry",
      +                        "kotc-warlord",
      +                        "kotc-epic-heroes",
      +                        "kotc-toughness",
      +                        "kotc-datasheet-copies"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "maxItems": 8,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "catalogueId",
      +                  "revision",
      +                  "limit",
      +                  "detachment",
      +                  "disposition",
      +                  "units"
      +                ],
      +                "type": "object"
      +              },
      +              "id": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "type": "string"
      +              },
      +              "reminders": {
      +                "items": {
      +                  "properties": {
      +                    "ability": {
      +                      "maxLength": 80,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "description": {
      +                      "maxLength": 10000,
      +                      "type": "string"
      +                    },
      +                    "key": {
      +                      "maxLength": 240,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "timings": {
      +                      "items": {
      +                        "oneOf": [
      +                          {
      +                            "properties": {
      +                              "moment": {
      +                                "enum": [
      +                                  "phase-start",
      +                                  "phase-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "enum": [
      +                                  "command",
      +                                  "movement",
      +                                  "shooting",
      +                                  "charge",
      +                                  "fight"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "moment": {
      +                                "enum": [
      +                                  "turn-start",
      +                                  "turn-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          }
      +                        ]
      +                      },
      +                      "maxItems": 10,
      +                      "minItems": 1,
      +                      "type": "array"
      +                    },
      +                    "unit": {
      +                      "properties": {
      +                        "index": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "index",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    }
      +                  },
      +                  "required": [
      +                    "key",
      +                    "ability",
      +                    "description",
      +                    "timings"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 100,
      +                "type": "array"
      +              },
      +              "remindersEnabled": {
      +                "type": "boolean"
      +              },
      +              "text": {
      +                "maxLength": 20000,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "text"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "roster"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "destroyed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "set-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "destroyed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-prep",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "primary": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "awards": {
      +                    "items": {
      +                      "properties": {
      +                        "criteria": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 2000,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "cumulative": {
      +                          "type": "boolean"
      +                        },
      +                        "group": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 100,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "max": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 100,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "mode": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 40,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "per": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 200,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "trigger": {
      +                          "properties": {
      +                            "phase": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "playerTurn": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMax": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMin": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "timing": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            }
      +                          },
      +                          "required": [
      +                            "timing",
      +                            "phase",
      +                            "playerTurn",
      +                            "roundMin",
      +                            "roundMax"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "vp": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "vp",
      +                        "per",
      +                        "mode",
      +                        "max",
      +                        "group",
      +                        "cumulative",
      +                        "criteria",
      +                        "trigger"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "key": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "maxLength": 80,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "key",
      +                  "name"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 6,
      +            "type": "array"
      +          },
      +          "secondaryDeck": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 60,
      +            "type": "array"
      +          },
      +          "secondaryMode": {
      +            "enum": [
      +              "fixed",
      +              "tactical"
      +            ],
      +            "type": "string"
      +          },
      +          "stratagems": {
      +            "items": {
      +              "properties": {
      +                "cp": {
      +                  "maximum": 6,
      +                  "minimum": 0,
      +                  "type": "integer"
      +                },
      +                "detachment": {
      +                  "maxLength": 249,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "limit": {
      +                  "enum": [
      +                    "phase",
      +                    "turn",
      +                    "battle-round",
      +                    "battle",
      +                    "unlimited"
      +                  ],
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "phases": {
      +                  "items": {
      +                    "enum": [
      +                      "command",
      +                      "movement",
      +                      "shooting",
      +                      "charge",
      +                      "fight",
      +                      "end"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "maxItems": 6,
      +                  "type": "array"
      +                },
      +                "turn": {
      +                  "enum": [
      +                    "your-turn",
      +                    "opponent-turn",
      +                    "either"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name",
      +                "cp",
      +                "limit"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 48,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagems",
      +          "secondaries",
      +          "primary",
      +          "secondaryMode"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "deployed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "deploy-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "deployed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "formation": {
      +            "enum": [
      +              "battlefield",
      +              "strategic-reserves",
      +              "deep-strike",
      +              "embarked"
      +            ],
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-unit-formation",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "transportKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "formation"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-painted",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "painted"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "wound-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "damage-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-deployment",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-battlefield",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "terrainLayoutId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId",
      +          "terrainLayoutId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "use-stratagem",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "use-new-orders",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          },
      +          "secondaryKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "stratagemKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagemKey",
      +          "secondaryKey",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "score-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "score-settlement",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "round": {
      +            "maximum": 5,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "scores": {
      +            "items": {
      +              "oneOf": [
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "primary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "secondary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "key": {
      +                      "maxLength": 64,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "status": {
      +                      "const": "achieved",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "key",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                }
      +              ]
      +            },
      +            "maxItems": 31,
      +            "minItems": 1,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "scores"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-secondary-status",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "status": {
      +            "enum": [
      +              "active",
      +              "achieved",
      +              "discarded",
      +              "returned"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondaries",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 2,
      +            "minItems": 1,
      +            "type": "array"
      +          },
      +          "selected": {
      +            "const": true,
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondaries"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-draw",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-scoring",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "select-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reveal-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "begin-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "adjust-cp",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "gainCp": {
      +            "type": "boolean"
      +          },
      +          "keys": {
      +            "items": {
      +              "maxLength": 64,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "kind": {
      +            "const": "resolve-tactical-hand",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "category": {
      +            "enum": [
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          },
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "score",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "category",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "correct-player",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "resource": {
      +            "enum": [
      +              "cp",
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "playerId",
      +          "resource",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "settle-opponent-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "request-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "cancel-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "pause-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "resume-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "concededBy": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "end-battle",
      +            "type": "string"
      +          },
      +          "reason": {
      +            "enum": [
      +              "completed",
      +              "finished-early",
      +              "conceded"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reopen-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "undo",
      +            "type": "string"
      +          },
      +          "target": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "target"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "attach-saved-roster",
      +        "type": "string"
      +      },
      +      "playerId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "rosterId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "rosterId"
      +    ],
      +    "type": "object"
      +  }
      +]
  18. Changed1 schema field changed
    • changedInput schema / properties / command / anyOf
      Previous value: -[
      -  {
      -    "oneOf": [
      -      {
      -        "properties": {
      -          "clockLimitMinutes": {
      -            "anyOf": [
      -              {
      -                "maximum": 300,
      -                "minimum": 5,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "kind": {
      -            "const": "configure-battle",
      -            "type": "string"
      -          },
      -          "limit": {
      -            "maximum": 10000,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "missionPackId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "playerCount": {
      -            "anyOf": [
      -              {
      -                "const": 2,
      -                "type": "number"
      -              },
      -              {
      -                "const": 3,
      -                "type": "number"
      -              },
      -              {
      -                "const": 4,
      -                "type": "number"
      -              }
      -            ]
      -          },
      -          "teamBattle": {
      -            "type": "boolean"
      -          },
      -          "terrainLayoutId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "twistId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "limit",
      -          "missionPackId",
      -          "terrainLayoutId",
      -          "twistId",
      -          "clockLimitMinutes"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reset-setup",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "detach-roster",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "eventToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "lock-league-rosters",
      -            "type": "string"
      -          },
      -          "leagueToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "leagueToken"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-setup-step",
      -            "type": "string"
      -          },
      -          "step": {
      -            "maximum": 9,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "step"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-attacker",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "attackerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-first-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "disposition": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-side-disposition",
      -            "type": "string"
      -          },
      -          "side": {
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "side",
      -          "disposition"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "attach-roster",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "prep": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "primary": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "awards": {
      -                            "items": {
      -                              "properties": {
      -                                "criteria": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 2000,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "cumulative": {
      -                                  "type": "boolean"
      -                                },
      -                                "group": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 100,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "max": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maximum": 100,
      -                                      "minimum": 0,
      -                                      "type": "integer"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "mode": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 40,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "per": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 200,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "trigger": {
      -                                  "properties": {
      -                                    "phase": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "playerTurn": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMax": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMin": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "timing": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    }
      -                                  },
      -                                  "required": [
      -                                    "timing",
      -                                    "phase",
      -                                    "playerTurn",
      -                                    "roundMin",
      -                                    "roundMax"
      -                                  ],
      -                                  "type": "object"
      -                                },
      -                                "vp": {
      -                                  "maximum": 100,
      -                                  "minimum": 0,
      -                                  "type": "integer"
      -                                }
      -                              },
      -                              "required": [
      -                                "vp",
      -                                "per",
      -                                "mode",
      -                                "max",
      -                                "group",
      -                                "cumulative",
      -                                "criteria",
      -                                "trigger"
      -                              ],
      -                              "type": "object"
      -                            },
      -                            "maxItems": 20,
      -                            "type": "array"
      -                          },
      -                          "key": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "name": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "key",
      -                          "name"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "secondaries": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 6,
      -                    "type": "array"
      -                  },
      -                  "secondaryDeck": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 60,
      -                    "type": "array"
      -                  },
      -                  "secondaryMode": {
      -                    "enum": [
      -                      "fixed",
      -                      "tactical"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "stratagems": {
      -                    "items": {
      -                      "properties": {
      -                        "cp": {
      -                          "maximum": 6,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "detachment": {
      -                          "maxLength": 249,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "limit": {
      -                          "enum": [
      -                            "phase",
      -                            "turn",
      -                            "battle",
      -                            "unlimited"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "phases": {
      -                          "items": {
      -                            "enum": [
      -                              "command",
      -                              "movement",
      -                              "shooting",
      -                              "charge",
      -                              "fight",
      -                              "end"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 6,
      -                          "type": "array"
      -                        },
      -                        "turn": {
      -                          "enum": [
      -                            "your-turn",
      -                            "opponent-turn",
      -                            "either"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "cp",
      -                        "limit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 48,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "stratagems",
      -                  "secondaries",
      -                  "primary",
      -                  "secondaryMode"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "roster": {
      -            "properties": {
      -              "built": {
      -                "properties": {
      -                  "catalogueId": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "detachment": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 80,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachmentIds": {
      -                    "items": {
      -                      "maxLength": 64,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "detachmentPointBudget": {
      -                    "anyOf": [
      -                      {
      -                        "maximum": 3,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachments": {
      -                    "items": {
      -                      "properties": {
      -                        "name": {
      -                          "maxLength": 80,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 3,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "name",
      -                        "points"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "disposition": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 64,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "limit": {
      -                    "maximum": 10000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "picks": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "catalogueId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "choices": {
      -                          "additionalProperties": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 60,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        },
      -                        "spreads": {
      -                          "additionalProperties": {
      -                            "additionalProperties": {
      -                              "maximum": 60,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            "propertyNames": {
      -                              "maxLength": 64,
      -                              "type": "string"
      -                            },
      -                            "type": "object"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "toggles": {
      -                          "additionalProperties": {
      -                            "maximum": 1,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "entryId"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 100,
      -                    "type": "array"
      -                  },
      -                  "revision": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "strategicReserveLimit": {
      -                    "maximum": 5000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "enhancements": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "formationOptions": {
      -                          "items": {
      -                            "enum": [
      -                              "battlefield",
      -                              "strategic-reserves",
      -                              "deep-strike",
      -                              "embarked"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 4,
      -                          "type": "array"
      -                        },
      -                        "group": {
      -                          "enum": [
      -                            "epic-hero",
      -                            "character",
      -                            "battleline",
      -                            "infantry",
      -                            "swarm",
      -                            "mounted",
      -                            "beast",
      -                            "monster",
      -                            "vehicle",
      -                            "drone",
      -                            "transport",
      -                            "fortification",
      -                            "other"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "joined": {
      -                          "items": {
      -                            "properties": {
      -                              "label": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "label",
      -                              "name"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "maximum": 10000,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "prebattleRules": {
      -                          "items": {
      -                            "enum": [
      -                              "infiltrators",
      -                              "scouts"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 2,
      -                          "type": "array"
      -                        },
      -                        "strategicReserveExempt": {
      -                          "type": "boolean"
      -                        },
      -                        "transport": {
      -                          "type": "boolean"
      -                        },
      -                        "transportRule": {
      -                          "maxLength": 4000,
      -                          "type": "string"
      -                        },
      -                        "upgrades": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "wargear": {
      -                          "items": {
      -                            "properties": {
      -                              "count": {
      -                                "maximum": 100,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "name",
      -                              "count"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 200,
      -                          "type": "array"
      -                        },
      -                        "warlord": {
      -                          "type": "boolean"
      -                        },
      -                        "warlordEligible": {
      -                          "type": "boolean"
      -                        },
      -                        "wounds": {
      -                          "maximum": 100,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "points",
      -                        "models"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 200,
      -                    "type": "array"
      -                  },
      -                  "waivedRules": {
      -                    "items": {
      -                      "enum": [
      -                        "points-limit",
      -                        "detachments",
      -                        "detachment-points",
      -                        "kotc-infantry",
      -                        "kotc-warlord",
      -                        "kotc-epic-heroes",
      -                        "kotc-toughness",
      -                        "kotc-datasheet-copies"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "maxItems": 8,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "catalogueId",
      -                  "revision",
      -                  "limit",
      -                  "detachment",
      -                  "disposition",
      -                  "units"
      -                ],
      -                "type": "object"
      -              },
      -              "id": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "type": "string"
      -              },
      -              "reminders": {
      -                "items": {
      -                  "properties": {
      -                    "ability": {
      -                      "maxLength": 80,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "description": {
      -                      "maxLength": 10000,
      -                      "type": "string"
      -                    },
      -                    "key": {
      -                      "maxLength": 240,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "timings": {
      -                      "items": {
      -                        "oneOf": [
      -                          {
      -                            "properties": {
      -                              "moment": {
      -                                "enum": [
      -                                  "phase-start",
      -                                  "phase-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "enum": [
      -                                  "command",
      -                                  "movement",
      -                                  "shooting",
      -                                  "charge",
      -                                  "fight"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "moment": {
      -                                "enum": [
      -                                  "turn-start",
      -                                  "turn-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          }
      -                        ]
      -                      },
      -                      "maxItems": 10,
      -                      "minItems": 1,
      -                      "type": "array"
      -                    },
      -                    "unit": {
      -                      "properties": {
      -                        "index": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "index",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    }
      -                  },
      -                  "required": [
      -                    "key",
      -                    "ability",
      -                    "description",
      -                    "timings"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 100,
      -                "type": "array"
      -              },
      -              "remindersEnabled": {
      -                "type": "boolean"
      -              },
      -              "text": {
      -                "maxLength": 20000,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "name",
      -              "text"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "roster"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "destroyed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "set-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "destroyed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-prep",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "primary": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "awards": {
      -                    "items": {
      -                      "properties": {
      -                        "criteria": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 2000,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "cumulative": {
      -                          "type": "boolean"
      -                        },
      -                        "group": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 100,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "max": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 100,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "mode": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 40,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "per": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 200,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "trigger": {
      -                          "properties": {
      -                            "phase": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "playerTurn": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMax": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMin": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "timing": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            }
      -                          },
      -                          "required": [
      -                            "timing",
      -                            "phase",
      -                            "playerTurn",
      -                            "roundMin",
      -                            "roundMax"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "vp": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "vp",
      -                        "per",
      -                        "mode",
      -                        "max",
      -                        "group",
      -                        "cumulative",
      -                        "criteria",
      -                        "trigger"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "key": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "name": {
      -                    "maxLength": 80,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "key",
      -                  "name"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 6,
      -            "type": "array"
      -          },
      -          "secondaryDeck": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 60,
      -            "type": "array"
      -          },
      -          "secondaryMode": {
      -            "enum": [
      -              "fixed",
      -              "tactical"
      -            ],
      -            "type": "string"
      -          },
      -          "stratagems": {
      -            "items": {
      -              "properties": {
      -                "cp": {
      -                  "maximum": 6,
      -                  "minimum": 0,
      -                  "type": "integer"
      -                },
      -                "detachment": {
      -                  "maxLength": 249,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "limit": {
      -                  "enum": [
      -                    "phase",
      -                    "turn",
      -                    "battle",
      -                    "unlimited"
      -                  ],
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "phases": {
      -                  "items": {
      -                    "enum": [
      -                      "command",
      -                      "movement",
      -                      "shooting",
      -                      "charge",
      -                      "fight",
      -                      "end"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "maxItems": 6,
      -                  "type": "array"
      -                },
      -                "turn": {
      -                  "enum": [
      -                    "your-turn",
      -                    "opponent-turn",
      -                    "either"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name",
      -                "cp",
      -                "limit"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 48,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagems",
      -          "secondaries",
      -          "primary",
      -          "secondaryMode"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "deployed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "deploy-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "deployed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "formation": {
      -            "enum": [
      -              "battlefield",
      -              "strategic-reserves",
      -              "deep-strike",
      -              "embarked"
      -            ],
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-unit-formation",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "transportKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "formation"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-painted",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "painted"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "wound-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "damage-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-deployment",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-battlefield",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "terrainLayoutId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId",
      -          "terrainLayoutId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "use-stratagem",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "use-new-orders",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          },
      -          "secondaryKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "stratagemKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagemKey",
      -          "secondaryKey",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "score-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "score-settlement",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "round": {
      -            "maximum": 5,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "scores": {
      -            "items": {
      -              "oneOf": [
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "primary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "secondary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "key": {
      -                      "maxLength": 64,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "status": {
      -                      "const": "achieved",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "key",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                }
      -              ]
      -            },
      -            "maxItems": 31,
      -            "minItems": 1,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "scores"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-secondary-status",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "status": {
      -            "enum": [
      -              "active",
      -              "achieved",
      -              "discarded",
      -              "returned"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "status"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondaries",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 2,
      -            "minItems": 1,
      -            "type": "array"
      -          },
      -          "selected": {
      -            "const": true,
      -            "type": "boolean"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondaries"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-draw",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-scoring",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "select-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reveal-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "begin-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "adjust-cp",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "gainCp": {
      -            "type": "boolean"
      -          },
      -          "keys": {
      -            "items": {
      -              "maxLength": 64,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "kind": {
      -            "const": "resolve-tactical-hand",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "category": {
      -            "enum": [
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          },
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "score",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "category",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "correct-player",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "resource": {
      -            "enum": [
      -              "cp",
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "playerId",
      -          "resource",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "settle-opponent-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "request-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "cancel-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "pause-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "resume-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "concededBy": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "end-battle",
      -            "type": "string"
      -          },
      -          "reason": {
      -            "enum": [
      -              "completed",
      -              "finished-early",
      -              "conceded"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reopen-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "undo",
      -            "type": "string"
      -          },
      -          "target": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "target"
      -        ],
      -        "type": "object"
      -      }
      -    ]
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "attach-saved-roster",
      -        "type": "string"
      -      },
      -      "playerId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "rosterId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "rosterId"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "oneOf": [
      +      {
      +        "properties": {
      +          "clockLimitMinutes": {
      +            "anyOf": [
      +              {
      +                "maximum": 300,
      +                "minimum": 5,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "kind": {
      +            "const": "configure-battle",
      +            "type": "string"
      +          },
      +          "limit": {
      +            "maximum": 10000,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "missionPackId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "playerCount": {
      +            "anyOf": [
      +              {
      +                "const": 2,
      +                "type": "number"
      +              },
      +              {
      +                "const": 3,
      +                "type": "number"
      +              },
      +              {
      +                "const": 4,
      +                "type": "number"
      +              }
      +            ]
      +          },
      +          "teamBattle": {
      +            "type": "boolean"
      +          },
      +          "terrainLayoutId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "twistId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "limit",
      +          "missionPackId",
      +          "terrainLayoutId",
      +          "twistId",
      +          "clockLimitMinutes"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reset-setup",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "detach-roster",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "eventToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "lock-league-rosters",
      +            "type": "string"
      +          },
      +          "leagueToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "leagueToken"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-setup-step",
      +            "type": "string"
      +          },
      +          "step": {
      +            "maximum": 9,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "step"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-attacker",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "attackerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-first-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "disposition": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-side-disposition",
      +            "type": "string"
      +          },
      +          "side": {
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "side",
      +          "disposition"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "attach-roster",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "prep": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "primary": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "awards": {
      +                            "items": {
      +                              "properties": {
      +                                "criteria": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 2000,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "cumulative": {
      +                                  "type": "boolean"
      +                                },
      +                                "group": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 100,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "max": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maximum": 100,
      +                                      "minimum": 0,
      +                                      "type": "integer"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "mode": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 40,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "per": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 200,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "trigger": {
      +                                  "properties": {
      +                                    "phase": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "playerTurn": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMax": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMin": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "timing": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    }
      +                                  },
      +                                  "required": [
      +                                    "timing",
      +                                    "phase",
      +                                    "playerTurn",
      +                                    "roundMin",
      +                                    "roundMax"
      +                                  ],
      +                                  "type": "object"
      +                                },
      +                                "vp": {
      +                                  "maximum": 100,
      +                                  "minimum": 0,
      +                                  "type": "integer"
      +                                }
      +                              },
      +                              "required": [
      +                                "vp",
      +                                "per",
      +                                "mode",
      +                                "max",
      +                                "group",
      +                                "cumulative",
      +                                "criteria",
      +                                "trigger"
      +                              ],
      +                              "type": "object"
      +                            },
      +                            "maxItems": 20,
      +                            "type": "array"
      +                          },
      +                          "key": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "name": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "key",
      +                          "name"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "secondaries": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 6,
      +                    "type": "array"
      +                  },
      +                  "secondaryDeck": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 60,
      +                    "type": "array"
      +                  },
      +                  "secondaryMode": {
      +                    "enum": [
      +                      "fixed",
      +                      "tactical"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "stratagems": {
      +                    "items": {
      +                      "properties": {
      +                        "cp": {
      +                          "maximum": 6,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "detachment": {
      +                          "maxLength": 249,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "limit": {
      +                          "enum": [
      +                            "phase",
      +                            "turn",
      +                            "battle",
      +                            "unlimited"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "phases": {
      +                          "items": {
      +                            "enum": [
      +                              "command",
      +                              "movement",
      +                              "shooting",
      +                              "charge",
      +                              "fight",
      +                              "end"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 6,
      +                          "type": "array"
      +                        },
      +                        "turn": {
      +                          "enum": [
      +                            "your-turn",
      +                            "opponent-turn",
      +                            "either"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "cp",
      +                        "limit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 48,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "stratagems",
      +                  "secondaries",
      +                  "primary",
      +                  "secondaryMode"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "roster": {
      +            "properties": {
      +              "built": {
      +                "properties": {
      +                  "catalogueId": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "detachment": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 80,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachmentIds": {
      +                    "items": {
      +                      "maxLength": 128,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "detachmentPointBudget": {
      +                    "anyOf": [
      +                      {
      +                        "maximum": 3,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachments": {
      +                    "items": {
      +                      "properties": {
      +                        "name": {
      +                          "maxLength": 80,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 3,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "name",
      +                        "points"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "disposition": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 64,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "limit": {
      +                    "maximum": 10000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "picks": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "catalogueId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "choices": {
      +                          "additionalProperties": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 60,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        },
      +                        "spreads": {
      +                          "additionalProperties": {
      +                            "additionalProperties": {
      +                              "maximum": 60,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            "propertyNames": {
      +                              "maxLength": 64,
      +                              "type": "string"
      +                            },
      +                            "type": "object"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "toggles": {
      +                          "additionalProperties": {
      +                            "maximum": 1,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "entryId"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 100,
      +                    "type": "array"
      +                  },
      +                  "revision": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "strategicReserveLimit": {
      +                    "maximum": 5000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "enhancements": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "formationOptions": {
      +                          "items": {
      +                            "enum": [
      +                              "battlefield",
      +                              "strategic-reserves",
      +                              "deep-strike",
      +                              "embarked"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 4,
      +                          "type": "array"
      +                        },
      +                        "group": {
      +                          "enum": [
      +                            "epic-hero",
      +                            "character",
      +                            "battleline",
      +                            "infantry",
      +                            "swarm",
      +                            "mounted",
      +                            "beast",
      +                            "monster",
      +                            "vehicle",
      +                            "drone",
      +                            "transport",
      +                            "fortification",
      +                            "other"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "joined": {
      +                          "items": {
      +                            "properties": {
      +                              "label": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "label",
      +                              "name"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "maximum": 10000,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "prebattleRules": {
      +                          "items": {
      +                            "enum": [
      +                              "infiltrators",
      +                              "scouts"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 2,
      +                          "type": "array"
      +                        },
      +                        "strategicReserveExempt": {
      +                          "type": "boolean"
      +                        },
      +                        "transport": {
      +                          "type": "boolean"
      +                        },
      +                        "transportRule": {
      +                          "maxLength": 4000,
      +                          "type": "string"
      +                        },
      +                        "upgrades": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "wargear": {
      +                          "items": {
      +                            "properties": {
      +                              "count": {
      +                                "maximum": 100,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "name",
      +                              "count"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 200,
      +                          "type": "array"
      +                        },
      +                        "warlord": {
      +                          "type": "boolean"
      +                        },
      +                        "warlordEligible": {
      +                          "type": "boolean"
      +                        },
      +                        "wounds": {
      +                          "maximum": 100,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "points",
      +                        "models"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 200,
      +                    "type": "array"
      +                  },
      +                  "waivedRules": {
      +                    "items": {
      +                      "enum": [
      +                        "points-limit",
      +                        "detachments",
      +                        "detachment-points",
      +                        "kotc-infantry",
      +                        "kotc-warlord",
      +                        "kotc-epic-heroes",
      +                        "kotc-toughness",
      +                        "kotc-datasheet-copies"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "maxItems": 8,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "catalogueId",
      +                  "revision",
      +                  "limit",
      +                  "detachment",
      +                  "disposition",
      +                  "units"
      +                ],
      +                "type": "object"
      +              },
      +              "id": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "type": "string"
      +              },
      +              "reminders": {
      +                "items": {
      +                  "properties": {
      +                    "ability": {
      +                      "maxLength": 80,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "description": {
      +                      "maxLength": 10000,
      +                      "type": "string"
      +                    },
      +                    "key": {
      +                      "maxLength": 240,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "timings": {
      +                      "items": {
      +                        "oneOf": [
      +                          {
      +                            "properties": {
      +                              "moment": {
      +                                "enum": [
      +                                  "phase-start",
      +                                  "phase-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "enum": [
      +                                  "command",
      +                                  "movement",
      +                                  "shooting",
      +                                  "charge",
      +                                  "fight"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "moment": {
      +                                "enum": [
      +                                  "turn-start",
      +                                  "turn-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          }
      +                        ]
      +                      },
      +                      "maxItems": 10,
      +                      "minItems": 1,
      +                      "type": "array"
      +                    },
      +                    "unit": {
      +                      "properties": {
      +                        "index": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "index",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    }
      +                  },
      +                  "required": [
      +                    "key",
      +                    "ability",
      +                    "description",
      +                    "timings"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 100,
      +                "type": "array"
      +              },
      +              "remindersEnabled": {
      +                "type": "boolean"
      +              },
      +              "text": {
      +                "maxLength": 20000,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "text"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "roster"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "destroyed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "set-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "destroyed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-prep",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "primary": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "awards": {
      +                    "items": {
      +                      "properties": {
      +                        "criteria": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 2000,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "cumulative": {
      +                          "type": "boolean"
      +                        },
      +                        "group": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 100,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "max": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 100,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "mode": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 40,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "per": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 200,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "trigger": {
      +                          "properties": {
      +                            "phase": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "playerTurn": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMax": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMin": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "timing": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            }
      +                          },
      +                          "required": [
      +                            "timing",
      +                            "phase",
      +                            "playerTurn",
      +                            "roundMin",
      +                            "roundMax"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "vp": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "vp",
      +                        "per",
      +                        "mode",
      +                        "max",
      +                        "group",
      +                        "cumulative",
      +                        "criteria",
      +                        "trigger"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "key": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "maxLength": 80,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "key",
      +                  "name"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 6,
      +            "type": "array"
      +          },
      +          "secondaryDeck": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 60,
      +            "type": "array"
      +          },
      +          "secondaryMode": {
      +            "enum": [
      +              "fixed",
      +              "tactical"
      +            ],
      +            "type": "string"
      +          },
      +          "stratagems": {
      +            "items": {
      +              "properties": {
      +                "cp": {
      +                  "maximum": 6,
      +                  "minimum": 0,
      +                  "type": "integer"
      +                },
      +                "detachment": {
      +                  "maxLength": 249,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "limit": {
      +                  "enum": [
      +                    "phase",
      +                    "turn",
      +                    "battle",
      +                    "unlimited"
      +                  ],
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "phases": {
      +                  "items": {
      +                    "enum": [
      +                      "command",
      +                      "movement",
      +                      "shooting",
      +                      "charge",
      +                      "fight",
      +                      "end"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "maxItems": 6,
      +                  "type": "array"
      +                },
      +                "turn": {
      +                  "enum": [
      +                    "your-turn",
      +                    "opponent-turn",
      +                    "either"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name",
      +                "cp",
      +                "limit"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 48,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagems",
      +          "secondaries",
      +          "primary",
      +          "secondaryMode"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "deployed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "deploy-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "deployed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "formation": {
      +            "enum": [
      +              "battlefield",
      +              "strategic-reserves",
      +              "deep-strike",
      +              "embarked"
      +            ],
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-unit-formation",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "transportKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "formation"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-painted",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "painted"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "wound-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "damage-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-deployment",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-battlefield",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "terrainLayoutId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId",
      +          "terrainLayoutId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "use-stratagem",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "use-new-orders",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          },
      +          "secondaryKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "stratagemKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagemKey",
      +          "secondaryKey",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "score-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "score-settlement",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "round": {
      +            "maximum": 5,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "scores": {
      +            "items": {
      +              "oneOf": [
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "primary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "secondary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "key": {
      +                      "maxLength": 64,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "status": {
      +                      "const": "achieved",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "key",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                }
      +              ]
      +            },
      +            "maxItems": 31,
      +            "minItems": 1,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "scores"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-secondary-status",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "status": {
      +            "enum": [
      +              "active",
      +              "achieved",
      +              "discarded",
      +              "returned"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondaries",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 2,
      +            "minItems": 1,
      +            "type": "array"
      +          },
      +          "selected": {
      +            "const": true,
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondaries"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-draw",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-scoring",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "select-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reveal-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "begin-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "adjust-cp",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "gainCp": {
      +            "type": "boolean"
      +          },
      +          "keys": {
      +            "items": {
      +              "maxLength": 64,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "kind": {
      +            "const": "resolve-tactical-hand",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "category": {
      +            "enum": [
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          },
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "score",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "category",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "correct-player",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "resource": {
      +            "enum": [
      +              "cp",
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "playerId",
      +          "resource",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "settle-opponent-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "request-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "cancel-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "pause-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "resume-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "concededBy": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "end-battle",
      +            "type": "string"
      +          },
      +          "reason": {
      +            "enum": [
      +              "completed",
      +              "finished-early",
      +              "conceded"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reopen-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "undo",
      +            "type": "string"
      +          },
      +          "target": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "target"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "attach-saved-roster",
      +        "type": "string"
      +      },
      +      "playerId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "rosterId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "rosterId"
      +    ],
      +    "type": "object"
      +  }
      +]
  19. Changed1 schema field changed
    • changedInput schema / properties / command / anyOf
      Previous value: -[
      -  {
      -    "oneOf": [
      -      {
      -        "properties": {
      -          "clockLimitMinutes": {
      -            "anyOf": [
      -              {
      -                "maximum": 300,
      -                "minimum": 5,
      -                "type": "integer"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "kind": {
      -            "const": "configure-battle",
      -            "type": "string"
      -          },
      -          "limit": {
      -            "maximum": 10000,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "missionPackId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "playerCount": {
      -            "anyOf": [
      -              {
      -                "const": 2,
      -                "type": "number"
      -              },
      -              {
      -                "const": 3,
      -                "type": "number"
      -              },
      -              {
      -                "const": 4,
      -                "type": "number"
      -              }
      -            ]
      -          },
      -          "teamBattle": {
      -            "type": "boolean"
      -          },
      -          "terrainLayoutId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "twistId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "limit",
      -          "missionPackId",
      -          "terrainLayoutId",
      -          "twistId",
      -          "clockLimitMinutes"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reset-setup",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "detach-roster",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "eventToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "lock-league-rosters",
      -            "type": "string"
      -          },
      -          "leagueToken": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "leagueToken"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-setup-step",
      -            "type": "string"
      -          },
      -          "step": {
      -            "maximum": 9,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "step"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-attacker",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "attackerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-first-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "disposition": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-side-disposition",
      -            "type": "string"
      -          },
      -          "side": {
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "side",
      -          "disposition"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "attach-roster",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "prep": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "primary": {
      -                    "anyOf": [
      -                      {
      -                        "properties": {
      -                          "awards": {
      -                            "items": {
      -                              "properties": {
      -                                "criteria": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 2000,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "cumulative": {
      -                                  "type": "boolean"
      -                                },
      -                                "group": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 100,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "max": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maximum": 100,
      -                                      "minimum": 0,
      -                                      "type": "integer"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "mode": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 40,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "per": {
      -                                  "anyOf": [
      -                                    {
      -                                      "maxLength": 200,
      -                                      "type": "string"
      -                                    },
      -                                    {
      -                                      "type": "null"
      -                                    }
      -                                  ]
      -                                },
      -                                "trigger": {
      -                                  "properties": {
      -                                    "phase": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "playerTurn": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMax": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "roundMin": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maximum": 5,
      -                                          "minimum": 1,
      -                                          "type": "integer"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    },
      -                                    "timing": {
      -                                      "anyOf": [
      -                                        {
      -                                          "maxLength": 80,
      -                                          "type": "string"
      -                                        },
      -                                        {
      -                                          "type": "null"
      -                                        }
      -                                      ]
      -                                    }
      -                                  },
      -                                  "required": [
      -                                    "timing",
      -                                    "phase",
      -                                    "playerTurn",
      -                                    "roundMin",
      -                                    "roundMax"
      -                                  ],
      -                                  "type": "object"
      -                                },
      -                                "vp": {
      -                                  "maximum": 100,
      -                                  "minimum": 0,
      -                                  "type": "integer"
      -                                }
      -                              },
      -                              "required": [
      -                                "vp",
      -                                "per",
      -                                "mode",
      -                                "max",
      -                                "group",
      -                                "cumulative",
      -                                "criteria",
      -                                "trigger"
      -                              ],
      -                              "type": "object"
      -                            },
      -                            "maxItems": 20,
      -                            "type": "array"
      -                          },
      -                          "key": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "name": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "key",
      -                          "name"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "secondaries": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 6,
      -                    "type": "array"
      -                  },
      -                  "secondaryDeck": {
      -                    "items": {
      -                      "properties": {
      -                        "awards": {
      -                          "items": {
      -                            "properties": {
      -                              "criteria": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 2000,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "cumulative": {
      -                                "type": "boolean"
      -                              },
      -                              "group": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 100,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "max": {
      -                                "anyOf": [
      -                                  {
      -                                    "maximum": 100,
      -                                    "minimum": 0,
      -                                    "type": "integer"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "mode": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 40,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "per": {
      -                                "anyOf": [
      -                                  {
      -                                    "maxLength": 200,
      -                                    "type": "string"
      -                                  },
      -                                  {
      -                                    "type": "null"
      -                                  }
      -                                ]
      -                              },
      -                              "trigger": {
      -                                "properties": {
      -                                  "phase": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "playerTurn": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMax": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "roundMin": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maximum": 5,
      -                                        "minimum": 1,
      -                                        "type": "integer"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  },
      -                                  "timing": {
      -                                    "anyOf": [
      -                                      {
      -                                        "maxLength": 80,
      -                                        "type": "string"
      -                                      },
      -                                      {
      -                                        "type": "null"
      -                                      }
      -                                    ]
      -                                  }
      -                                },
      -                                "required": [
      -                                  "timing",
      -                                  "phase",
      -                                  "playerTurn",
      -                                  "roundMin",
      -                                  "roundMax"
      -                                ],
      -                                "type": "object"
      -                              },
      -                              "vp": {
      -                                "maximum": 100,
      -                                "minimum": 0,
      -                                "type": "integer"
      -                              }
      -                            },
      -                            "required": [
      -                              "vp",
      -                              "per",
      -                              "mode",
      -                              "max",
      -                              "group",
      -                              "cumulative",
      -                              "criteria",
      -                              "trigger"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 60,
      -                    "type": "array"
      -                  },
      -                  "secondaryMode": {
      -                    "enum": [
      -                      "fixed",
      -                      "tactical"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "stratagems": {
      -                    "items": {
      -                      "properties": {
      -                        "cp": {
      -                          "maximum": 6,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "detachment": {
      -                          "maxLength": 249,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "limit": {
      -                          "enum": [
      -                            "phase",
      -                            "turn",
      -                            "battle",
      -                            "unlimited"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "phases": {
      -                          "items": {
      -                            "enum": [
      -                              "command",
      -                              "movement",
      -                              "shooting",
      -                              "charge",
      -                              "fight",
      -                              "end"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 6,
      -                          "type": "array"
      -                        },
      -                        "turn": {
      -                          "enum": [
      -                            "your-turn",
      -                            "opponent-turn",
      -                            "either"
      -                          ],
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "cp",
      -                        "limit"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 48,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "stratagems",
      -                  "secondaries",
      -                  "primary",
      -                  "secondaryMode"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "roster": {
      -            "properties": {
      -              "built": {
      -                "properties": {
      -                  "catalogueId": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "detachment": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 80,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachmentIds": {
      -                    "items": {
      -                      "maxLength": 64,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "detachmentPointBudget": {
      -                    "anyOf": [
      -                      {
      -                        "maximum": 3,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "detachments": {
      -                    "items": {
      -                      "properties": {
      -                        "name": {
      -                          "maxLength": 80,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 3,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "name",
      -                        "points"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 3,
      -                    "type": "array"
      -                  },
      -                  "disposition": {
      -                    "anyOf": [
      -                      {
      -                        "maxLength": 64,
      -                        "type": "string"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ]
      -                  },
      -                  "limit": {
      -                    "maximum": 10000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "picks": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "catalogueId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "choices": {
      -                          "additionalProperties": {
      -                            "maxLength": 64,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 60,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        },
      -                        "spreads": {
      -                          "additionalProperties": {
      -                            "additionalProperties": {
      -                              "maximum": 60,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            "propertyNames": {
      -                              "maxLength": 64,
      -                              "type": "string"
      -                            },
      -                            "type": "object"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        },
      -                        "toggles": {
      -                          "additionalProperties": {
      -                            "maximum": 1,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "propertyNames": {
      -                            "maxLength": 400,
      -                            "type": "string"
      -                          },
      -                          "type": "object"
      -                        }
      -                      },
      -                      "required": [
      -                        "entryId"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 100,
      -                    "type": "array"
      -                  },
      -                  "revision": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "strategicReserveLimit": {
      -                    "maximum": 5000,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "units": {
      -                    "items": {
      -                      "properties": {
      -                        "attachedTo": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "enhancements": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "entryId": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "formationOptions": {
      -                          "items": {
      -                            "enum": [
      -                              "battlefield",
      -                              "strategic-reserves",
      -                              "deep-strike",
      -                              "embarked"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 4,
      -                          "type": "array"
      -                        },
      -                        "group": {
      -                          "enum": [
      -                            "epic-hero",
      -                            "character",
      -                            "battleline",
      -                            "infantry",
      -                            "swarm",
      -                            "mounted",
      -                            "beast",
      -                            "monster",
      -                            "vehicle",
      -                            "drone",
      -                            "transport",
      -                            "fortification",
      -                            "other"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "joined": {
      -                          "items": {
      -                            "properties": {
      -                              "label": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "label",
      -                              "name"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "key": {
      -                          "maxLength": 64,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "models": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "points": {
      -                          "maximum": 10000,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "prebattleRules": {
      -                          "items": {
      -                            "enum": [
      -                              "infiltrators",
      -                              "scouts"
      -                            ],
      -                            "type": "string"
      -                          },
      -                          "maxItems": 2,
      -                          "type": "array"
      -                        },
      -                        "strategicReserveExempt": {
      -                          "type": "boolean"
      -                        },
      -                        "transport": {
      -                          "type": "boolean"
      -                        },
      -                        "transportRule": {
      -                          "maxLength": 4000,
      -                          "type": "string"
      -                        },
      -                        "upgrades": {
      -                          "items": {
      -                            "maxLength": 80,
      -                            "minLength": 1,
      -                            "type": "string"
      -                          },
      -                          "maxItems": 20,
      -                          "type": "array"
      -                        },
      -                        "wargear": {
      -                          "items": {
      -                            "properties": {
      -                              "count": {
      -                                "maximum": 100,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              "name": {
      -                                "maxLength": 80,
      -                                "minLength": 1,
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "name",
      -                              "count"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          "maxItems": 200,
      -                          "type": "array"
      -                        },
      -                        "warlord": {
      -                          "type": "boolean"
      -                        },
      -                        "warlordEligible": {
      -                          "type": "boolean"
      -                        },
      -                        "wounds": {
      -                          "maximum": 100,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "key",
      -                        "name",
      -                        "points",
      -                        "models"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 200,
      -                    "type": "array"
      -                  },
      -                  "waivedRules": {
      -                    "items": {
      -                      "enum": [
      -                        "detachments",
      -                        "detachment-points",
      -                        "kotc-infantry",
      -                        "kotc-warlord",
      -                        "kotc-epic-heroes",
      -                        "kotc-toughness",
      -                        "kotc-datasheet-copies"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "maxItems": 7,
      -                    "type": "array"
      -                  }
      -                },
      -                "required": [
      -                  "catalogueId",
      -                  "revision",
      -                  "limit",
      -                  "detachment",
      -                  "disposition",
      -                  "units"
      -                ],
      -                "type": "object"
      -              },
      -              "id": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "type": "string"
      -              },
      -              "reminders": {
      -                "items": {
      -                  "properties": {
      -                    "ability": {
      -                      "maxLength": 80,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "description": {
      -                      "maxLength": 10000,
      -                      "type": "string"
      -                    },
      -                    "key": {
      -                      "maxLength": 240,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "timings": {
      -                      "items": {
      -                        "oneOf": [
      -                          {
      -                            "properties": {
      -                              "moment": {
      -                                "enum": [
      -                                  "phase-start",
      -                                  "phase-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "enum": [
      -                                  "command",
      -                                  "movement",
      -                                  "shooting",
      -                                  "charge",
      -                                  "fight"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          },
      -                          {
      -                            "properties": {
      -                              "moment": {
      -                                "enum": [
      -                                  "turn-start",
      -                                  "turn-end"
      -                                ],
      -                                "type": "string"
      -                              },
      -                              "phase": {
      -                                "type": "null"
      -                              },
      -                              "turn": {
      -                                "enum": [
      -                                  "your-turn",
      -                                  "opponent-turn",
      -                                  "either"
      -                                ],
      -                                "type": "string"
      -                              }
      -                            },
      -                            "required": [
      -                              "moment",
      -                              "phase",
      -                              "turn"
      -                            ],
      -                            "type": "object"
      -                          }
      -                        ]
      -                      },
      -                      "maxItems": 10,
      -                      "minItems": 1,
      -                      "type": "array"
      -                    },
      -                    "unit": {
      -                      "properties": {
      -                        "index": {
      -                          "maximum": 99,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        "name": {
      -                          "maxLength": 80,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "index",
      -                        "name"
      -                      ],
      -                      "type": "object"
      -                    }
      -                  },
      -                  "required": [
      -                    "key",
      -                    "ability",
      -                    "description",
      -                    "timings"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 100,
      -                "type": "array"
      -              },
      -              "remindersEnabled": {
      -                "type": "boolean"
      -              },
      -              "text": {
      -                "maxLength": 20000,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "name",
      -              "text"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "roster"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "destroyed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "set-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "destroyed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-prep",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "primary": {
      -            "anyOf": [
      -              {
      -                "properties": {
      -                  "awards": {
      -                    "items": {
      -                      "properties": {
      -                        "criteria": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 2000,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "cumulative": {
      -                          "type": "boolean"
      -                        },
      -                        "group": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 100,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "max": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 100,
      -                              "minimum": 0,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "mode": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 40,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "per": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 200,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "trigger": {
      -                          "properties": {
      -                            "phase": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "playerTurn": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMax": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "roundMin": {
      -                              "anyOf": [
      -                                {
      -                                  "maximum": 5,
      -                                  "minimum": 1,
      -                                  "type": "integer"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "timing": {
      -                              "anyOf": [
      -                                {
      -                                  "maxLength": 80,
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            }
      -                          },
      -                          "required": [
      -                            "timing",
      -                            "phase",
      -                            "playerTurn",
      -                            "roundMin",
      -                            "roundMax"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "vp": {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "vp",
      -                        "per",
      -                        "mode",
      -                        "max",
      -                        "group",
      -                        "cumulative",
      -                        "criteria",
      -                        "trigger"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "maxItems": 20,
      -                    "type": "array"
      -                  },
      -                  "key": {
      -                    "maxLength": 64,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "name": {
      -                    "maxLength": 80,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "key",
      -                  "name"
      -                ],
      -                "type": "object"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 6,
      -            "type": "array"
      -          },
      -          "secondaryDeck": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 60,
      -            "type": "array"
      -          },
      -          "secondaryMode": {
      -            "enum": [
      -              "fixed",
      -              "tactical"
      -            ],
      -            "type": "string"
      -          },
      -          "stratagems": {
      -            "items": {
      -              "properties": {
      -                "cp": {
      -                  "maximum": 6,
      -                  "minimum": 0,
      -                  "type": "integer"
      -                },
      -                "detachment": {
      -                  "maxLength": 249,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "limit": {
      -                  "enum": [
      -                    "phase",
      -                    "turn",
      -                    "battle",
      -                    "unlimited"
      -                  ],
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "phases": {
      -                  "items": {
      -                    "enum": [
      -                      "command",
      -                      "movement",
      -                      "shooting",
      -                      "charge",
      -                      "fight",
      -                      "end"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "maxItems": 6,
      -                  "type": "array"
      -                },
      -                "turn": {
      -                  "enum": [
      -                    "your-turn",
      -                    "opponent-turn",
      -                    "either"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name",
      -                "cp",
      -                "limit"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 48,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagems",
      -          "secondaries",
      -          "primary",
      -          "secondaryMode"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "deployed": {
      -            "type": "boolean"
      -          },
      -          "kind": {
      -            "const": "deploy-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "deployed"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "formation": {
      -            "enum": [
      -              "battlefield",
      -              "strategic-reserves",
      -              "deep-strike",
      -              "embarked"
      -            ],
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-unit-formation",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "transportKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "formation"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-painted",
      -            "type": "string"
      -          },
      -          "painted": {
      -            "type": "boolean"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "painted"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "wound-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "damage-unit",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "unitKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "unitKey",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-deployment",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "anyOf": [
      -              {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "set-battlefield",
      -            "type": "string"
      -          },
      -          "patternId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "terrainLayoutId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "patternId",
      -          "terrainLayoutId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "use-stratagem",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "cp": {
      -            "maximum": 6,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "use-new-orders",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          },
      -          "secondaryKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "stratagemKey": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "stratagemKey",
      -          "secondaryKey",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "score-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "score-settlement",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "round": {
      -            "maximum": 5,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "scores": {
      -            "items": {
      -              "oneOf": [
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "primary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "properties": {
      -                    "category": {
      -                      "const": "secondary",
      -                      "type": "string"
      -                    },
      -                    "delta": {
      -                      "exclusiveMinimum": 0,
      -                      "maximum": 9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "key": {
      -                      "maxLength": 64,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "status": {
      -                      "const": "achieved",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "category",
      -                    "key",
      -                    "delta"
      -                  ],
      -                  "type": "object"
      -                }
      -              ]
      -            },
      -            "maxItems": 31,
      -            "minItems": 1,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "scores"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "key": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "set-secondary-status",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "status": {
      -            "enum": [
      -              "active",
      -              "achieved",
      -              "discarded",
      -              "returned"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "key",
      -          "status"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondary",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "draw-secondaries",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondaries": {
      -            "items": {
      -              "properties": {
      -                "awards": {
      -                  "items": {
      -                    "properties": {
      -                      "criteria": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 2000,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "cumulative": {
      -                        "type": "boolean"
      -                      },
      -                      "group": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 100,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "max": {
      -                        "anyOf": [
      -                          {
      -                            "maximum": 100,
      -                            "minimum": 0,
      -                            "type": "integer"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "mode": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 40,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "per": {
      -                        "anyOf": [
      -                          {
      -                            "maxLength": 200,
      -                            "type": "string"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "trigger": {
      -                        "properties": {
      -                          "phase": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "playerTurn": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMax": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "roundMin": {
      -                            "anyOf": [
      -                              {
      -                                "maximum": 5,
      -                                "minimum": 1,
      -                                "type": "integer"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          },
      -                          "timing": {
      -                            "anyOf": [
      -                              {
      -                                "maxLength": 80,
      -                                "type": "string"
      -                              },
      -                              {
      -                                "type": "null"
      -                              }
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "timing",
      -                          "phase",
      -                          "playerTurn",
      -                          "roundMin",
      -                          "roundMax"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "vp": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "integer"
      -                      }
      -                    },
      -                    "required": [
      -                      "vp",
      -                      "per",
      -                      "mode",
      -                      "max",
      -                      "group",
      -                      "cumulative",
      -                      "criteria",
      -                      "trigger"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "maxItems": 20,
      -                  "type": "array"
      -                },
      -                "key": {
      -                  "maxLength": 64,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "name": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "key",
      -                "name"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 2,
      -            "minItems": 1,
      -            "type": "array"
      -          },
      -          "selected": {
      -            "const": true,
      -            "type": "boolean"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondaries"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-draw",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "acknowledge-scoring",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "select-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "secondary": {
      -            "properties": {
      -              "awards": {
      -                "items": {
      -                  "properties": {
      -                    "criteria": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 2000,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "cumulative": {
      -                      "type": "boolean"
      -                    },
      -                    "group": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 100,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "max": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 100,
      -                          "minimum": 0,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "mode": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 40,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "per": {
      -                      "anyOf": [
      -                        {
      -                          "maxLength": 200,
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "trigger": {
      -                      "properties": {
      -                        "phase": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "playerTurn": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMax": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "roundMin": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 5,
      -                              "minimum": 1,
      -                              "type": "integer"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "timing": {
      -                          "anyOf": [
      -                            {
      -                              "maxLength": 80,
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "timing",
      -                        "phase",
      -                        "playerTurn",
      -                        "roundMin",
      -                        "roundMax"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "vp": {
      -                      "maximum": 100,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    }
      -                  },
      -                  "required": [
      -                    "vp",
      -                    "per",
      -                    "mode",
      -                    "max",
      -                    "group",
      -                    "cumulative",
      -                    "criteria",
      -                    "trigger"
      -                  ],
      -                  "type": "object"
      -                },
      -                "maxItems": 20,
      -                "type": "array"
      -              },
      -              "key": {
      -                "maxLength": 64,
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "name": {
      -                "maxLength": 80,
      -                "minLength": 1,
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "key",
      -              "name"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "secondary"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reveal-secret",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "attackerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "firstPlayerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "begin-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "firstPlayerId"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "adjust-cp",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "gainCp": {
      -            "type": "boolean"
      -          },
      -          "keys": {
      -            "items": {
      -              "maxLength": 64,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "kind": {
      -            "const": "resolve-tactical-hand",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "category": {
      -            "enum": [
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          },
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "score",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "category",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "delta": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "kind": {
      -            "const": "correct-player",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "resource": {
      -            "enum": [
      -              "cp",
      -              "primary",
      -              "secondary"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "playerId",
      -          "resource",
      -          "delta"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "settle-opponent-turn",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "request-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "cancel-advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "advance",
      -            "type": "string"
      -          },
      -          "playerId": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "pause-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "resume-clock",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "concededBy": {
      -            "maxLength": 64,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "kind": {
      -            "const": "end-battle",
      -            "type": "string"
      -          },
      -          "reason": {
      -            "enum": [
      -              "completed",
      -              "finished-early",
      -              "conceded"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "reopen-battle",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "kind"
      -        ],
      -        "type": "object"
      -      },
      -      {
      -        "properties": {
      -          "kind": {
      -            "const": "undo",
      -            "type": "string"
      -          },
      -          "target": {
      -            "exclusiveMinimum": 0,
      -            "maximum": 9007199254740991,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "target"
      -        ],
      -        "type": "object"
      -      }
      -    ]
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "attach-saved-roster",
      -        "type": "string"
      -      },
      -      "playerId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "rosterId": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "rosterId"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "oneOf": [
      +      {
      +        "properties": {
      +          "clockLimitMinutes": {
      +            "anyOf": [
      +              {
      +                "maximum": 300,
      +                "minimum": 5,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "kind": {
      +            "const": "configure-battle",
      +            "type": "string"
      +          },
      +          "limit": {
      +            "maximum": 10000,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "missionPackId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "playerCount": {
      +            "anyOf": [
      +              {
      +                "const": 2,
      +                "type": "number"
      +              },
      +              {
      +                "const": 3,
      +                "type": "number"
      +              },
      +              {
      +                "const": 4,
      +                "type": "number"
      +              }
      +            ]
      +          },
      +          "teamBattle": {
      +            "type": "boolean"
      +          },
      +          "terrainLayoutId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "twistId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "limit",
      +          "missionPackId",
      +          "terrainLayoutId",
      +          "twistId",
      +          "clockLimitMinutes"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reset-setup",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "detach-roster",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "eventToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "lock-league-rosters",
      +            "type": "string"
      +          },
      +          "leagueToken": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "leagueToken"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-setup-step",
      +            "type": "string"
      +          },
      +          "step": {
      +            "maximum": 9,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "step"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-attacker",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "attackerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-first-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "disposition": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-side-disposition",
      +            "type": "string"
      +          },
      +          "side": {
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "side",
      +          "disposition"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "attach-roster",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "prep": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "primary": {
      +                    "anyOf": [
      +                      {
      +                        "properties": {
      +                          "awards": {
      +                            "items": {
      +                              "properties": {
      +                                "criteria": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 2000,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "cumulative": {
      +                                  "type": "boolean"
      +                                },
      +                                "group": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 100,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "max": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maximum": 100,
      +                                      "minimum": 0,
      +                                      "type": "integer"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "mode": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 40,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "per": {
      +                                  "anyOf": [
      +                                    {
      +                                      "maxLength": 200,
      +                                      "type": "string"
      +                                    },
      +                                    {
      +                                      "type": "null"
      +                                    }
      +                                  ]
      +                                },
      +                                "trigger": {
      +                                  "properties": {
      +                                    "phase": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "playerTurn": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMax": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "roundMin": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maximum": 5,
      +                                          "minimum": 1,
      +                                          "type": "integer"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    },
      +                                    "timing": {
      +                                      "anyOf": [
      +                                        {
      +                                          "maxLength": 80,
      +                                          "type": "string"
      +                                        },
      +                                        {
      +                                          "type": "null"
      +                                        }
      +                                      ]
      +                                    }
      +                                  },
      +                                  "required": [
      +                                    "timing",
      +                                    "phase",
      +                                    "playerTurn",
      +                                    "roundMin",
      +                                    "roundMax"
      +                                  ],
      +                                  "type": "object"
      +                                },
      +                                "vp": {
      +                                  "maximum": 100,
      +                                  "minimum": 0,
      +                                  "type": "integer"
      +                                }
      +                              },
      +                              "required": [
      +                                "vp",
      +                                "per",
      +                                "mode",
      +                                "max",
      +                                "group",
      +                                "cumulative",
      +                                "criteria",
      +                                "trigger"
      +                              ],
      +                              "type": "object"
      +                            },
      +                            "maxItems": 20,
      +                            "type": "array"
      +                          },
      +                          "key": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "name": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "key",
      +                          "name"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "secondaries": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 6,
      +                    "type": "array"
      +                  },
      +                  "secondaryDeck": {
      +                    "items": {
      +                      "properties": {
      +                        "awards": {
      +                          "items": {
      +                            "properties": {
      +                              "criteria": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 2000,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "cumulative": {
      +                                "type": "boolean"
      +                              },
      +                              "group": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 100,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "max": {
      +                                "anyOf": [
      +                                  {
      +                                    "maximum": 100,
      +                                    "minimum": 0,
      +                                    "type": "integer"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "mode": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 40,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "per": {
      +                                "anyOf": [
      +                                  {
      +                                    "maxLength": 200,
      +                                    "type": "string"
      +                                  },
      +                                  {
      +                                    "type": "null"
      +                                  }
      +                                ]
      +                              },
      +                              "trigger": {
      +                                "properties": {
      +                                  "phase": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "playerTurn": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMax": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "roundMin": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maximum": 5,
      +                                        "minimum": 1,
      +                                        "type": "integer"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  },
      +                                  "timing": {
      +                                    "anyOf": [
      +                                      {
      +                                        "maxLength": 80,
      +                                        "type": "string"
      +                                      },
      +                                      {
      +                                        "type": "null"
      +                                      }
      +                                    ]
      +                                  }
      +                                },
      +                                "required": [
      +                                  "timing",
      +                                  "phase",
      +                                  "playerTurn",
      +                                  "roundMin",
      +                                  "roundMax"
      +                                ],
      +                                "type": "object"
      +                              },
      +                              "vp": {
      +                                "maximum": 100,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              }
      +                            },
      +                            "required": [
      +                              "vp",
      +                              "per",
      +                              "mode",
      +                              "max",
      +                              "group",
      +                              "cumulative",
      +                              "criteria",
      +                              "trigger"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 60,
      +                    "type": "array"
      +                  },
      +                  "secondaryMode": {
      +                    "enum": [
      +                      "fixed",
      +                      "tactical"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "stratagems": {
      +                    "items": {
      +                      "properties": {
      +                        "cp": {
      +                          "maximum": 6,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "detachment": {
      +                          "maxLength": 249,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "limit": {
      +                          "enum": [
      +                            "phase",
      +                            "turn",
      +                            "battle",
      +                            "unlimited"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "phases": {
      +                          "items": {
      +                            "enum": [
      +                              "command",
      +                              "movement",
      +                              "shooting",
      +                              "charge",
      +                              "fight",
      +                              "end"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 6,
      +                          "type": "array"
      +                        },
      +                        "turn": {
      +                          "enum": [
      +                            "your-turn",
      +                            "opponent-turn",
      +                            "either"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "cp",
      +                        "limit"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 48,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "stratagems",
      +                  "secondaries",
      +                  "primary",
      +                  "secondaryMode"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "roster": {
      +            "properties": {
      +              "built": {
      +                "properties": {
      +                  "catalogueId": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "detachment": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 80,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachmentIds": {
      +                    "items": {
      +                      "maxLength": 64,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "detachmentPointBudget": {
      +                    "anyOf": [
      +                      {
      +                        "maximum": 3,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "detachments": {
      +                    "items": {
      +                      "properties": {
      +                        "name": {
      +                          "maxLength": 80,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 3,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "name",
      +                        "points"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 3,
      +                    "type": "array"
      +                  },
      +                  "disposition": {
      +                    "anyOf": [
      +                      {
      +                        "maxLength": 64,
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "limit": {
      +                    "maximum": 10000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "picks": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "catalogueId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "choices": {
      +                          "additionalProperties": {
      +                            "maxLength": 64,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 60,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        },
      +                        "spreads": {
      +                          "additionalProperties": {
      +                            "additionalProperties": {
      +                              "maximum": 60,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            "propertyNames": {
      +                              "maxLength": 64,
      +                              "type": "string"
      +                            },
      +                            "type": "object"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        },
      +                        "toggles": {
      +                          "additionalProperties": {
      +                            "maximum": 1,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "propertyNames": {
      +                            "maxLength": 400,
      +                            "type": "string"
      +                          },
      +                          "type": "object"
      +                        }
      +                      },
      +                      "required": [
      +                        "entryId"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 100,
      +                    "type": "array"
      +                  },
      +                  "revision": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "strategicReserveLimit": {
      +                    "maximum": 5000,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "units": {
      +                    "items": {
      +                      "properties": {
      +                        "attachedTo": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "enhancements": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "entryId": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "formationOptions": {
      +                          "items": {
      +                            "enum": [
      +                              "battlefield",
      +                              "strategic-reserves",
      +                              "deep-strike",
      +                              "embarked"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 4,
      +                          "type": "array"
      +                        },
      +                        "group": {
      +                          "enum": [
      +                            "epic-hero",
      +                            "character",
      +                            "battleline",
      +                            "infantry",
      +                            "swarm",
      +                            "mounted",
      +                            "beast",
      +                            "monster",
      +                            "vehicle",
      +                            "drone",
      +                            "transport",
      +                            "fortification",
      +                            "other"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "joined": {
      +                          "items": {
      +                            "properties": {
      +                              "label": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "label",
      +                              "name"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "key": {
      +                          "maxLength": 64,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "models": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "points": {
      +                          "maximum": 10000,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "prebattleRules": {
      +                          "items": {
      +                            "enum": [
      +                              "infiltrators",
      +                              "scouts"
      +                            ],
      +                            "type": "string"
      +                          },
      +                          "maxItems": 2,
      +                          "type": "array"
      +                        },
      +                        "strategicReserveExempt": {
      +                          "type": "boolean"
      +                        },
      +                        "transport": {
      +                          "type": "boolean"
      +                        },
      +                        "transportRule": {
      +                          "maxLength": 4000,
      +                          "type": "string"
      +                        },
      +                        "upgrades": {
      +                          "items": {
      +                            "maxLength": 80,
      +                            "minLength": 1,
      +                            "type": "string"
      +                          },
      +                          "maxItems": 20,
      +                          "type": "array"
      +                        },
      +                        "wargear": {
      +                          "items": {
      +                            "properties": {
      +                              "count": {
      +                                "maximum": 100,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              "name": {
      +                                "maxLength": 80,
      +                                "minLength": 1,
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "name",
      +                              "count"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "maxItems": 200,
      +                          "type": "array"
      +                        },
      +                        "warlord": {
      +                          "type": "boolean"
      +                        },
      +                        "warlordEligible": {
      +                          "type": "boolean"
      +                        },
      +                        "wounds": {
      +                          "maximum": 100,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "key",
      +                        "name",
      +                        "points",
      +                        "models"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 200,
      +                    "type": "array"
      +                  },
      +                  "waivedRules": {
      +                    "items": {
      +                      "enum": [
      +                        "points-limit",
      +                        "detachments",
      +                        "detachment-points",
      +                        "kotc-infantry",
      +                        "kotc-warlord",
      +                        "kotc-epic-heroes",
      +                        "kotc-toughness",
      +                        "kotc-datasheet-copies"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "maxItems": 8,
      +                    "type": "array"
      +                  }
      +                },
      +                "required": [
      +                  "catalogueId",
      +                  "revision",
      +                  "limit",
      +                  "detachment",
      +                  "disposition",
      +                  "units"
      +                ],
      +                "type": "object"
      +              },
      +              "id": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "type": "string"
      +              },
      +              "reminders": {
      +                "items": {
      +                  "properties": {
      +                    "ability": {
      +                      "maxLength": 80,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "description": {
      +                      "maxLength": 10000,
      +                      "type": "string"
      +                    },
      +                    "key": {
      +                      "maxLength": 240,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "timings": {
      +                      "items": {
      +                        "oneOf": [
      +                          {
      +                            "properties": {
      +                              "moment": {
      +                                "enum": [
      +                                  "phase-start",
      +                                  "phase-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "enum": [
      +                                  "command",
      +                                  "movement",
      +                                  "shooting",
      +                                  "charge",
      +                                  "fight"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "properties": {
      +                              "moment": {
      +                                "enum": [
      +                                  "turn-start",
      +                                  "turn-end"
      +                                ],
      +                                "type": "string"
      +                              },
      +                              "phase": {
      +                                "type": "null"
      +                              },
      +                              "turn": {
      +                                "enum": [
      +                                  "your-turn",
      +                                  "opponent-turn",
      +                                  "either"
      +                                ],
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "moment",
      +                              "phase",
      +                              "turn"
      +                            ],
      +                            "type": "object"
      +                          }
      +                        ]
      +                      },
      +                      "maxItems": 10,
      +                      "minItems": 1,
      +                      "type": "array"
      +                    },
      +                    "unit": {
      +                      "properties": {
      +                        "index": {
      +                          "maximum": 99,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "name": {
      +                          "maxLength": 80,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "index",
      +                        "name"
      +                      ],
      +                      "type": "object"
      +                    }
      +                  },
      +                  "required": [
      +                    "key",
      +                    "ability",
      +                    "description",
      +                    "timings"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 100,
      +                "type": "array"
      +              },
      +              "remindersEnabled": {
      +                "type": "boolean"
      +              },
      +              "text": {
      +                "maxLength": 20000,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "text"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "roster"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "destroyed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "set-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "destroyed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-prep",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "primary": {
      +            "anyOf": [
      +              {
      +                "properties": {
      +                  "awards": {
      +                    "items": {
      +                      "properties": {
      +                        "criteria": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 2000,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "cumulative": {
      +                          "type": "boolean"
      +                        },
      +                        "group": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 100,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "max": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 100,
      +                              "minimum": 0,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "mode": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 40,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "per": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 200,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "trigger": {
      +                          "properties": {
      +                            "phase": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "playerTurn": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMax": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "roundMin": {
      +                              "anyOf": [
      +                                {
      +                                  "maximum": 5,
      +                                  "minimum": 1,
      +                                  "type": "integer"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            },
      +                            "timing": {
      +                              "anyOf": [
      +                                {
      +                                  "maxLength": 80,
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ]
      +                            }
      +                          },
      +                          "required": [
      +                            "timing",
      +                            "phase",
      +                            "playerTurn",
      +                            "roundMin",
      +                            "roundMax"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "vp": {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "vp",
      +                        "per",
      +                        "mode",
      +                        "max",
      +                        "group",
      +                        "cumulative",
      +                        "criteria",
      +                        "trigger"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "maxItems": 20,
      +                    "type": "array"
      +                  },
      +                  "key": {
      +                    "maxLength": 64,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "maxLength": 80,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "key",
      +                  "name"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 6,
      +            "type": "array"
      +          },
      +          "secondaryDeck": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 60,
      +            "type": "array"
      +          },
      +          "secondaryMode": {
      +            "enum": [
      +              "fixed",
      +              "tactical"
      +            ],
      +            "type": "string"
      +          },
      +          "stratagems": {
      +            "items": {
      +              "properties": {
      +                "cp": {
      +                  "maximum": 6,
      +                  "minimum": 0,
      +                  "type": "integer"
      +                },
      +                "detachment": {
      +                  "maxLength": 249,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "limit": {
      +                  "enum": [
      +                    "phase",
      +                    "turn",
      +                    "battle",
      +                    "unlimited"
      +                  ],
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "phases": {
      +                  "items": {
      +                    "enum": [
      +                      "command",
      +                      "movement",
      +                      "shooting",
      +                      "charge",
      +                      "fight",
      +                      "end"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "maxItems": 6,
      +                  "type": "array"
      +                },
      +                "turn": {
      +                  "enum": [
      +                    "your-turn",
      +                    "opponent-turn",
      +                    "either"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name",
      +                "cp",
      +                "limit"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 48,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagems",
      +          "secondaries",
      +          "primary",
      +          "secondaryMode"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "deployed": {
      +            "type": "boolean"
      +          },
      +          "kind": {
      +            "const": "deploy-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "deployed"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "formation": {
      +            "enum": [
      +              "battlefield",
      +              "strategic-reserves",
      +              "deep-strike",
      +              "embarked"
      +            ],
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-unit-formation",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "transportKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "formation"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-painted",
      +            "type": "string"
      +          },
      +          "painted": {
      +            "type": "boolean"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "painted"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "wound-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "damage-unit",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "unitKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "unitKey",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-deployment",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "anyOf": [
      +              {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "set-battlefield",
      +            "type": "string"
      +          },
      +          "patternId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "terrainLayoutId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "patternId",
      +          "terrainLayoutId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "use-stratagem",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "cp": {
      +            "maximum": 6,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "use-new-orders",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          },
      +          "secondaryKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "stratagemKey": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "stratagemKey",
      +          "secondaryKey",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "score-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "score-settlement",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "round": {
      +            "maximum": 5,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "scores": {
      +            "items": {
      +              "oneOf": [
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "primary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "properties": {
      +                    "category": {
      +                      "const": "secondary",
      +                      "type": "string"
      +                    },
      +                    "delta": {
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "key": {
      +                      "maxLength": 64,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "status": {
      +                      "const": "achieved",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "category",
      +                    "key",
      +                    "delta"
      +                  ],
      +                  "type": "object"
      +                }
      +              ]
      +            },
      +            "maxItems": 31,
      +            "minItems": 1,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "scores"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "key": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "set-secondary-status",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "status": {
      +            "enum": [
      +              "active",
      +              "achieved",
      +              "discarded",
      +              "returned"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "key",
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondary",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "draw-secondaries",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondaries": {
      +            "items": {
      +              "properties": {
      +                "awards": {
      +                  "items": {
      +                    "properties": {
      +                      "criteria": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 2000,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "cumulative": {
      +                        "type": "boolean"
      +                      },
      +                      "group": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 100,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "max": {
      +                        "anyOf": [
      +                          {
      +                            "maximum": 100,
      +                            "minimum": 0,
      +                            "type": "integer"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "mode": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 40,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "per": {
      +                        "anyOf": [
      +                          {
      +                            "maxLength": 200,
      +                            "type": "string"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "trigger": {
      +                        "properties": {
      +                          "phase": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "playerTurn": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMax": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "roundMin": {
      +                            "anyOf": [
      +                              {
      +                                "maximum": 5,
      +                                "minimum": 1,
      +                                "type": "integer"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "timing": {
      +                            "anyOf": [
      +                              {
      +                                "maxLength": 80,
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "timing",
      +                          "phase",
      +                          "playerTurn",
      +                          "roundMin",
      +                          "roundMax"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "vp": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "vp",
      +                      "per",
      +                      "mode",
      +                      "max",
      +                      "group",
      +                      "cumulative",
      +                      "criteria",
      +                      "trigger"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "maxItems": 20,
      +                  "type": "array"
      +                },
      +                "key": {
      +                  "maxLength": 64,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "key",
      +                "name"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 2,
      +            "minItems": 1,
      +            "type": "array"
      +          },
      +          "selected": {
      +            "const": true,
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondaries"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-draw",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "acknowledge-scoring",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "select-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "secondary": {
      +            "properties": {
      +              "awards": {
      +                "items": {
      +                  "properties": {
      +                    "criteria": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 2000,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "cumulative": {
      +                      "type": "boolean"
      +                    },
      +                    "group": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 100,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "max": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 100,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "mode": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 40,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "per": {
      +                      "anyOf": [
      +                        {
      +                          "maxLength": 200,
      +                          "type": "string"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "trigger": {
      +                      "properties": {
      +                        "phase": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "playerTurn": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMax": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "roundMin": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 5,
      +                              "minimum": 1,
      +                              "type": "integer"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "timing": {
      +                          "anyOf": [
      +                            {
      +                              "maxLength": 80,
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "timing",
      +                        "phase",
      +                        "playerTurn",
      +                        "roundMin",
      +                        "roundMax"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "vp": {
      +                      "maximum": 100,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    }
      +                  },
      +                  "required": [
      +                    "vp",
      +                    "per",
      +                    "mode",
      +                    "max",
      +                    "group",
      +                    "cumulative",
      +                    "criteria",
      +                    "trigger"
      +                  ],
      +                  "type": "object"
      +                },
      +                "maxItems": 20,
      +                "type": "array"
      +              },
      +              "key": {
      +                "maxLength": 64,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "name": {
      +                "maxLength": 80,
      +                "minLength": 1,
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "name"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "secondary"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reveal-secret",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "attackerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "firstPlayerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "begin-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "firstPlayerId"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "adjust-cp",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "gainCp": {
      +            "type": "boolean"
      +          },
      +          "keys": {
      +            "items": {
      +              "maxLength": 64,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "kind": {
      +            "const": "resolve-tactical-hand",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "category": {
      +            "enum": [
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          },
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "score",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "category",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "delta": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "const": "correct-player",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "resource": {
      +            "enum": [
      +              "cp",
      +              "primary",
      +              "secondary"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "playerId",
      +          "resource",
      +          "delta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "settle-opponent-turn",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "request-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "cancel-advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "advance",
      +            "type": "string"
      +          },
      +          "playerId": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "pause-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "resume-clock",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "concededBy": {
      +            "maxLength": 64,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "kind": {
      +            "const": "end-battle",
      +            "type": "string"
      +          },
      +          "reason": {
      +            "enum": [
      +              "completed",
      +              "finished-early",
      +              "conceded"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "reopen-battle",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "kind": {
      +            "const": "undo",
      +            "type": "string"
      +          },
      +          "target": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "target"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "attach-saved-roster",
      +        "type": "string"
      +      },
      +      "playerId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "rosterId": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "rosterId"
      +    ],
      +    "type": "object"
      +  }
      +]
  20. Added

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a non-read-only, destructive, non-idempotent write. The description adds value beyond them by disclosing the auth scope requirement (mcp:write) and the optimistic-concurrency guard, both material to calling it correctly. It stops short of saying what a seq mismatch returns or whether retries are safe.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences with the core action front-loaded and no filler. Nothing is wasted, though the size is arguably too small for the complexity it fronts.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool whose command payload is a deeply nested union of dozens of command kinds, no output schema, and zero schema descriptions, this is significantly under-specified. The write mechanics are covered, but an agent gets no help constructing a valid command.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden, yet it only explains expectedSeq (matching the current log). The token parameter and the enormous command discriminated union — the entire substance of the call — receive no semantic explanation at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ("appends a legal battle command") plus a scoping condition, which is enough for an agent to identify this as the action-submission tool. It does not explicitly differentiate itself from siblings like create_battle, but the verb+resource is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives one strong precondition (call only when expectedSeq matches the current log), which is genuine usage guidance. However, it names no alternatives and no explicit when-not, leaving the agent to infer how this differs from other battle-mutating tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.