{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://www.calculatorx.com/schemas/math.percent_change/1.1.1/input.json",
  "title": "Percentage change — input",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "v1": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "maxLength": 512,
          "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
        },
        {
          "type": "string",
          "pattern": "^\\s*$",
          "maxLength": 512
        }
      ]
    },
    "v1Input": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "maxLength": 512,
          "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
        },
        {
          "type": "string",
          "pattern": "^\\s*$",
          "maxLength": 512
        }
      ]
    },
    "oldV": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "maxLength": 512,
          "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
        },
        {
          "type": "string",
          "pattern": "^\\s*$",
          "maxLength": 512
        }
      ]
    },
    "old": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "maxLength": 512,
          "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
        },
        {
          "type": "string",
          "pattern": "^\\s*$",
          "maxLength": 512
        }
      ]
    },
    "oldInput": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "maxLength": 512,
          "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
        },
        {
          "type": "string",
          "pattern": "^\\s*$",
          "maxLength": 512
        }
      ]
    },
    "initial": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "maxLength": 512,
          "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
        },
        {
          "type": "string",
          "pattern": "^\\s*$",
          "maxLength": 512
        }
      ]
    },
    "v2": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "maxLength": 512,
          "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
        },
        {
          "type": "string",
          "pattern": "^\\s*$",
          "maxLength": 512
        }
      ]
    },
    "v2Input": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "maxLength": 512,
          "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
        },
        {
          "type": "string",
          "pattern": "^\\s*$",
          "maxLength": 512
        }
      ]
    },
    "newV": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "maxLength": 512,
          "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
        },
        {
          "type": "string",
          "pattern": "^\\s*$",
          "maxLength": 512
        }
      ]
    },
    "new": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "maxLength": 512,
          "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
        },
        {
          "type": "string",
          "pattern": "^\\s*$",
          "maxLength": 512
        }
      ]
    },
    "newInput": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "maxLength": 512,
          "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
        },
        {
          "type": "string",
          "pattern": "^\\s*$",
          "maxLength": 512
        }
      ]
    },
    "final": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "maxLength": 512,
          "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
        },
        {
          "type": "string",
          "pattern": "^\\s*$",
          "maxLength": 512
        }
      ]
    },
    "p": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "maxLength": 512,
          "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
        },
        {
          "type": "string",
          "pattern": "^\\s*$",
          "maxLength": 512
        }
      ]
    },
    "pInput": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "maxLength": 512,
          "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
        },
        {
          "type": "string",
          "pattern": "^\\s*$",
          "maxLength": 512
        }
      ]
    },
    "P": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "maxLength": 512,
          "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
        },
        {
          "type": "string",
          "pattern": "^\\s*$",
          "maxLength": 512
        }
      ]
    },
    "percent": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "maxLength": 512,
          "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
        },
        {
          "type": "string",
          "pattern": "^\\s*$",
          "maxLength": 512
        }
      ]
    },
    "percent_change": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "maxLength": 512,
          "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
        },
        {
          "type": "string",
          "pattern": "^\\s*$",
          "maxLength": 512
        }
      ]
    },
    "pct": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string",
          "maxLength": 512,
          "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
        },
        {
          "type": "string",
          "pattern": "^\\s*$",
          "maxLength": 512
        }
      ]
    },
    "solve_for": {
      "enum": [
        "p",
        "percent",
        "pct",
        "percent_change",
        "change",
        "v1",
        "initial",
        "old",
        "oldv",
        "v2",
        "final",
        "new",
        "newv"
      ]
    },
    "solveFor": {
      "enum": [
        "p",
        "percent",
        "pct",
        "percent_change",
        "change",
        "v1",
        "initial",
        "old",
        "oldv",
        "v2",
        "final",
        "new",
        "newv"
      ]
    }
  },
  "anyOf": [
    {
      "allOf": [
        {
          "anyOf": [
            {
              "required": [
                "v1"
              ],
              "properties": {
                "v1": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "v1Input"
              ],
              "properties": {
                "v1Input": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "oldV"
              ],
              "properties": {
                "oldV": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "old"
              ],
              "properties": {
                "old": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "oldInput"
              ],
              "properties": {
                "oldInput": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "initial"
              ],
              "properties": {
                "initial": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            }
          ]
        },
        {
          "anyOf": [
            {
              "required": [
                "v2"
              ],
              "properties": {
                "v2": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "v2Input"
              ],
              "properties": {
                "v2Input": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "newV"
              ],
              "properties": {
                "newV": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "new"
              ],
              "properties": {
                "new": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "newInput"
              ],
              "properties": {
                "newInput": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "final"
              ],
              "properties": {
                "final": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            }
          ]
        }
      ]
    },
    {
      "allOf": [
        {
          "anyOf": [
            {
              "required": [
                "v2"
              ],
              "properties": {
                "v2": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "v2Input"
              ],
              "properties": {
                "v2Input": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "newV"
              ],
              "properties": {
                "newV": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "new"
              ],
              "properties": {
                "new": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "newInput"
              ],
              "properties": {
                "newInput": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "final"
              ],
              "properties": {
                "final": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            }
          ]
        },
        {
          "anyOf": [
            {
              "required": [
                "p"
              ],
              "properties": {
                "p": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "pInput"
              ],
              "properties": {
                "pInput": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "P"
              ],
              "properties": {
                "P": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "percent"
              ],
              "properties": {
                "percent": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "percent_change"
              ],
              "properties": {
                "percent_change": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "pct"
              ],
              "properties": {
                "pct": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            }
          ]
        }
      ]
    },
    {
      "allOf": [
        {
          "anyOf": [
            {
              "required": [
                "v1"
              ],
              "properties": {
                "v1": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "v1Input"
              ],
              "properties": {
                "v1Input": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "oldV"
              ],
              "properties": {
                "oldV": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "old"
              ],
              "properties": {
                "old": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "oldInput"
              ],
              "properties": {
                "oldInput": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "initial"
              ],
              "properties": {
                "initial": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            }
          ]
        },
        {
          "anyOf": [
            {
              "required": [
                "p"
              ],
              "properties": {
                "p": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "pInput"
              ],
              "properties": {
                "pInput": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "P"
              ],
              "properties": {
                "P": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "percent"
              ],
              "properties": {
                "percent": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "percent_change"
              ],
              "properties": {
                "percent_change": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            },
            {
              "required": [
                "pct"
              ],
              "properties": {
                "pct": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "maxLength": 512,
                      "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                    }
                  ]
                }
              }
            }
          ]
        }
      ]
    }
  ],
  "allOf": [
    {
      "if": {
        "required": [
          "solve_for"
        ],
        "properties": {
          "solve_for": {
            "enum": [
              "p",
              "percent",
              "pct",
              "percent_change",
              "change"
            ]
          }
        }
      },
      "then": {
        "allOf": [
          {
            "anyOf": [
              {
                "required": [
                  "v1"
                ],
                "properties": {
                  "v1": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "v1Input"
                ],
                "properties": {
                  "v1Input": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "oldV"
                ],
                "properties": {
                  "oldV": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "old"
                ],
                "properties": {
                  "old": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "oldInput"
                ],
                "properties": {
                  "oldInput": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "initial"
                ],
                "properties": {
                  "initial": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              }
            ]
          },
          {
            "anyOf": [
              {
                "required": [
                  "v2"
                ],
                "properties": {
                  "v2": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "v2Input"
                ],
                "properties": {
                  "v2Input": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "newV"
                ],
                "properties": {
                  "newV": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "new"
                ],
                "properties": {
                  "new": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "newInput"
                ],
                "properties": {
                  "newInput": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "final"
                ],
                "properties": {
                  "final": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              }
            ]
          }
        ]
      }
    },
    {
      "if": {
        "required": [
          "solve_for"
        ],
        "properties": {
          "solve_for": {
            "enum": [
              "v1",
              "initial",
              "old",
              "oldv"
            ]
          }
        }
      },
      "then": {
        "allOf": [
          {
            "anyOf": [
              {
                "required": [
                  "v2"
                ],
                "properties": {
                  "v2": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "v2Input"
                ],
                "properties": {
                  "v2Input": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "newV"
                ],
                "properties": {
                  "newV": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "new"
                ],
                "properties": {
                  "new": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "newInput"
                ],
                "properties": {
                  "newInput": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "final"
                ],
                "properties": {
                  "final": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              }
            ]
          },
          {
            "anyOf": [
              {
                "required": [
                  "p"
                ],
                "properties": {
                  "p": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "pInput"
                ],
                "properties": {
                  "pInput": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "P"
                ],
                "properties": {
                  "P": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "percent"
                ],
                "properties": {
                  "percent": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "percent_change"
                ],
                "properties": {
                  "percent_change": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "pct"
                ],
                "properties": {
                  "pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              }
            ]
          }
        ]
      }
    },
    {
      "if": {
        "required": [
          "solve_for"
        ],
        "properties": {
          "solve_for": {
            "enum": [
              "v2",
              "final",
              "new",
              "newv"
            ]
          }
        }
      },
      "then": {
        "allOf": [
          {
            "anyOf": [
              {
                "required": [
                  "v1"
                ],
                "properties": {
                  "v1": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "v1Input"
                ],
                "properties": {
                  "v1Input": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "oldV"
                ],
                "properties": {
                  "oldV": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "old"
                ],
                "properties": {
                  "old": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "oldInput"
                ],
                "properties": {
                  "oldInput": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "initial"
                ],
                "properties": {
                  "initial": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              }
            ]
          },
          {
            "anyOf": [
              {
                "required": [
                  "p"
                ],
                "properties": {
                  "p": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "pInput"
                ],
                "properties": {
                  "pInput": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "P"
                ],
                "properties": {
                  "P": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "percent"
                ],
                "properties": {
                  "percent": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "percent_change"
                ],
                "properties": {
                  "percent_change": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "pct"
                ],
                "properties": {
                  "pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              }
            ]
          }
        ]
      }
    },
    {
      "if": {
        "required": [
          "solveFor"
        ],
        "properties": {
          "solveFor": {
            "enum": [
              "p",
              "percent",
              "pct",
              "percent_change",
              "change"
            ]
          }
        }
      },
      "then": {
        "allOf": [
          {
            "anyOf": [
              {
                "required": [
                  "v1"
                ],
                "properties": {
                  "v1": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "v1Input"
                ],
                "properties": {
                  "v1Input": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "oldV"
                ],
                "properties": {
                  "oldV": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "old"
                ],
                "properties": {
                  "old": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "oldInput"
                ],
                "properties": {
                  "oldInput": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "initial"
                ],
                "properties": {
                  "initial": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              }
            ]
          },
          {
            "anyOf": [
              {
                "required": [
                  "v2"
                ],
                "properties": {
                  "v2": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "v2Input"
                ],
                "properties": {
                  "v2Input": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "newV"
                ],
                "properties": {
                  "newV": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "new"
                ],
                "properties": {
                  "new": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "newInput"
                ],
                "properties": {
                  "newInput": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "final"
                ],
                "properties": {
                  "final": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              }
            ]
          }
        ]
      }
    },
    {
      "if": {
        "required": [
          "solveFor"
        ],
        "properties": {
          "solveFor": {
            "enum": [
              "v1",
              "initial",
              "old",
              "oldv"
            ]
          }
        }
      },
      "then": {
        "allOf": [
          {
            "anyOf": [
              {
                "required": [
                  "v2"
                ],
                "properties": {
                  "v2": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "v2Input"
                ],
                "properties": {
                  "v2Input": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "newV"
                ],
                "properties": {
                  "newV": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "new"
                ],
                "properties": {
                  "new": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "newInput"
                ],
                "properties": {
                  "newInput": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "final"
                ],
                "properties": {
                  "final": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              }
            ]
          },
          {
            "anyOf": [
              {
                "required": [
                  "p"
                ],
                "properties": {
                  "p": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "pInput"
                ],
                "properties": {
                  "pInput": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "P"
                ],
                "properties": {
                  "P": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "percent"
                ],
                "properties": {
                  "percent": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "percent_change"
                ],
                "properties": {
                  "percent_change": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "pct"
                ],
                "properties": {
                  "pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              }
            ]
          }
        ]
      }
    },
    {
      "if": {
        "required": [
          "solveFor"
        ],
        "properties": {
          "solveFor": {
            "enum": [
              "v2",
              "final",
              "new",
              "newv"
            ]
          }
        }
      },
      "then": {
        "allOf": [
          {
            "anyOf": [
              {
                "required": [
                  "v1"
                ],
                "properties": {
                  "v1": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "v1Input"
                ],
                "properties": {
                  "v1Input": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "oldV"
                ],
                "properties": {
                  "oldV": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "old"
                ],
                "properties": {
                  "old": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "oldInput"
                ],
                "properties": {
                  "oldInput": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "initial"
                ],
                "properties": {
                  "initial": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              }
            ]
          },
          {
            "anyOf": [
              {
                "required": [
                  "p"
                ],
                "properties": {
                  "p": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "pInput"
                ],
                "properties": {
                  "pInput": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "P"
                ],
                "properties": {
                  "P": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "percent"
                ],
                "properties": {
                  "percent": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "percent_change"
                ],
                "properties": {
                  "percent_change": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              },
              {
                "required": [
                  "pct"
                ],
                "properties": {
                  "pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 512,
                        "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
                      }
                    ]
                  }
                }
              }
            ]
          }
        ]
      }
    }
  ],
  "description": "Finite binary64 numbers or decimal strings up to512 characters. Any two values; solve_for p/v1/v2 selects the missing quantity. Blank optional targets are omitted; active inputs must be present. Aliases must agree. All three check8ULP nonzero same-sign percentage consistency, strict zero. Reject nonzero input/output underflow and overflow, including secondary fields or any valid inverse branch: rescale. (calculation_version 1.1.1)"
}
